Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: [C]: strcmp

  1. #1
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892

    [C]: strcmp

    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

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    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:
    codice:
    char *str1 = ...;
    char *str2 = ...;
    
    if (!strcmp(str1, str2)) {
       // sono uguali...
    }
    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

  3. #3
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    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!!!

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    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:
    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);
    }
    Le funzioni rovescia() e concatena() le lascio implementare a te.


    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

  5. #5
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    guarda che questo lo ho già fatto!!!!
    posso postarti il codice??
    così riesco a capire (speriamo gli errori che faccio)!!!

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    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

  7. #7
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    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");
    }

  8. #8
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    Io non riesco a trovare gli errori! se cambio qualcosa me ne vengono fuori altri.....


  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Forse così funziona meglio:
    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"); 
    }
    Stai attento ad allocare la memoria per i puntatori!


    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

  10. #10
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    ma così ancora non mi fa la strcat!!! e non riesco a capire perchè!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.