Hello boyz and girlz!!!
Ho uja questione importante da risolvere: ma per far funzionare strcmp tra 2 puntatori di tipo char *s devo inserirla in un ciclo for????
Grasie, ciauz
Hello boyz and girlz!!!
Ho uja questione importante da risolvere: ma per far funzionare strcmp tra 2 puntatori di tipo char *s devo inserirla in un ciclo for????
Grasie, ciauz
Scusa... non ho capito la domanda... se hai due stringhe (due puntatori a carattere) e le vuoi confrontare, utilizzi semplicemente la strcmp() in questo modo:
Ciao.codice:char *str1 = ...; char *str2 = ...; if (!strcmp(str1, str2)) { // sono uguali... }
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
scusa, mi rispiego!
io devo vedere se una parola è palindroma!!
allora rovescio la parola e la memorizzo in una stringa, poi confronto la stringa originale con quella alla rovescia con strcmp !
Se sono uguali tutto ok , altrimenti devo concatenare la parola rovesciata con quella originale!!!
Ma nn mi riesce proprio di andare nel ramo dove le parole sono diverse!! come mai?? Riesci a fare un esempio di codice??
Altrimenti ti posto il mio!!!
Mi sa che non metti il punto esclamativo nel controllo: strcmp() ritorna 0 se le due parole sono uguali, altrimenti ritorna la differenza lessicografica tra la prima e la seconda. Questa è una linea guida di come devi procedere:
Le funzioni rovescia() e concatena() le lascio implementare a te.codice:char *parola1 = ...; char *parola2 = ...; // rovescio la seconda: char * rovesciata = rovescia(parola2); // confronto la rovesciata con la prima if (!strcmp(parola1, rovesciata)) { // Sono uguali... } else { // sono diverse: appendo la prima alla rovesciata della seconda char *nuova = concatena(parola1, rovesciata); }
Ciao.
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
guarda che questo lo ho già fatto!!!!
posso postarti il codice??
così riesco a capire (speriamo gli errori che faccio)!!!
Prova a postare il codice... magari lo provo e vedo dov'è l'errore (se ci riesco )...
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
ecco il codice :
#include <stdio.h>
#include <string.h>
int palindroma (char *s){
int i,len;
char a[]={0};
char *t;
t=&a[0];
len=strlen(s);
for (i=0; i<=len; i++)
t[i]=s[len-i-1];
t[len]='\0';
if (!strcmp(t,s)){
strcat(s,t);
printf("La parola è diventata: ");
while (*s!=len){
printf("%s", *s);
s++;}
return 0; }
else
return 1;
}
int main(){
char stringa[]={"remo\0"};
char *s;
s=&stringa[0];
printf("Parola inserita: ");
while (*s !='\0'){
printf("%c",*s);
s++;}
printf("\n");
palindroma(s);
printf("\n");
}
Io non riesco a trovare gli errori! se cambio qualcosa me ne vengono fuori altri.....
Forse così funziona meglio:
Stai attento ad allocare la memoria per i puntatori!codice:#include <stdio.h> #include <string.h> int palindroma (char *s){ int i,len; char *t; len=strlen(s); t = (char*) malloc(len * sizeof(char)); for (i=0; i<=len; i++) t[i]=s[len-i-1]; t[len-1]='\0'; if (!strcmp(t,s)){ strcat(s,t); printf("La parola è diventata: "); while (*s!=len){ printf("%s", *s); s++; } return 0; } else { printf("non sono uguali"); return 1; } } int main(){ char stringa[]={"remo\0"}; char *s; s = &stringa[0]; printf("Parola inserita: "); while (*s !='\0'){ printf("%c",*s); s++; } printf("\n"); palindroma(s); printf("\n"); }
Ciao.
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
ma così ancora non mi fa la strcat!!! e non riesco a capire perchè!!!