Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110

    [C] - warning: comparison between pointer and integer

    salve a tutti,
    la situazione è la seguente ed un pò incasina.

    ho una funzione
    searchFile(cu, stringToSearch, De);
    e il suo prototipo è
    int searchFile(char *a, char *ToSearch[], int D)

    ora dato *stringToSearch[] dichiarato come
    char *stringToSearch[] = {"A","B","C"};

    all'interno della funzione searchFile ho dichiarato
    char FirstRingElement;
    e l'assegnazione
    FirstRingElement = cu[0];
    in questo modo mi visualizza il primo elemento di una stringa (printf("element %c\n",FirstRingElement) come B per una stringa BAAABC
    dove cu è
    char *cu; questi punta ad una stringa allocata dinamicamente (BAAABC creata tramite malloc)
    il problema è il seguente se scrivo

    if (ToSearch[1]=="B") funziona tutto regolarmente
    ma se scrivo
    (ToSearch[1]==FirstRingElement)

    dove tramite una printf vedo che FirstRingElement è proprio B
    mi riporta il seguente warning
    warning: comparison between pointer and integer

    penso sia dovuto al fatto che tramite una printf visualizzo il contenuto puntato da cu[0]
    in questo caso B quindi quando cerco di comparare
    ToSearch[1] con FirstRingElement mi riporta l'errore.
    Come faccio ad evitare questo warning?
    tks

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,301
    Ma le stringhe non si confrontano utilizzando l'operatore == bensì utilizzando strcmp() che ritorna 0 se le stinghe confrontate sono uguali...

    Il confronto utilizzando l'operatore == viene effettuato sui puntatori e non sul contenuto.


    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
    Registrato dal
    May 2007
    Messaggi
    110
    grazie ma non mi soddisfa
    anche perchè se faccio
    ...strcmp(ToSearch[t],FirstRingElement)...
    ho lo stesso un problema.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [C] - warning: comparison between pointer and integer

    Originariamente inviato da earp_
    (ToSearch[1]==FirstRingElement)
    Quindi ToSearch[1] è un puntatore a char mentre FirstRingElement è solo un char, un carattere. Ovvio che non ti quadra con == e nemmeno con strcmp
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    esatto è solo un carattere preso da
    FirstRingElement = cu[0];

    dove cu è dichiarato come
    char *cu;

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da earp_
    esatto è solo un carattere preso da
    FirstRingElement = cu[0];

    dove cu è dichiarato come
    char *cu;
    Allora devi farti la domanda: vuoi testare solo il primo carattere della stringa (indipendentemente da quelli seguenti) o vuoi testare che la stringa sia proprio lunga 1 carattere uguale a quello?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    vorrei testare solo il primo carattere della stringa (indipendentemente da quelli seguenti)
    e mi chiedevo come senza creare quel warining.
    tks per la pazienza.

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da earp_
    vorrei testare solo il primo carattere della stringa (indipendentemente da quelli seguenti)
    e mi chiedevo come senza creare quel warining.
    if (ToSearch[1][0] == FirstRingElement)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    me la spieghi per cortesia?

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    110
    anzi se volessi invece individuare solo il primo e il secondo indipendentemente dal resto cambia di molto?

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.