Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C]Confronto di stringhe con strcmp

    Buongiorno a tutti!
    Ho un problema con un programma che ordina delle stringhe immesse da tastiera.
    codice:
    /* Ordinamento di stringhe */
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void stringBubbleSort( char *strPtr, int numString );
    
    main()
    {
          int j;
          char nomi[10][20];
          char *stringPtr[10];
          
          for ( j = 0; j < 10; j++ )
          {
              printf("Nome n. %d = ", j);
              scanf("%s", &nomi[j][0]);
              stringPtr[j] = &nomi[j][0];
          }
          stringBubbleSort(*stringPtr, 10);
          
          for ( j = 0; j < 10; j++ )
              printf("Nome n. %d = %s\n", j, stringPtr[j]);
              
          printf("\n\n");
          
          system("pause");
    }
    
    void stringBubbleSort( char *strPtr, int numString )
    {
         unsigned short scambio;
         int i;
         char *temp;
         
         do {
             scambio = 0;
             
             for ( i = 0; i < numString - 1; i++ )
             {
                 if ( strcmp(strPtr[i], strPtr[i + 1]) > 0 )
                 {
                      temp = strPtr[i];
                      strPtr[i] = strPtr[i + 1];
                      strPtr[i + 1] = temp;
                      scambio = 1;
                 }
             }
         } while (scambio);
    }
    Nella riga 41 : if ( strcmp(strPtr[i], strPtr[i + 1]) > 0 ) mi dice:
    invalid conversion from `char' to `const char*'

    Qualcuno di voi mi può aiutare? Grazie!

  2. #2
    Ciao, credo che l'errore sia nella chiamata alla funzione stringBubbleSort, infatti anzichè passarli il puntatore strPtr, prima lo dereferenzi.

    Prova a sostituire

    codice:
    stringBubbleSort(*stringPtr, 10)
    con

    codice:
    stringBubbleSort(stringPtr, 10)
    ***Ciao***

  3. #3
    Inoltre quello che vuoi passare alla funzione non è un char*, ma un array di char*. Perciò devi sostituire il parametro char *strPtr con char* strPtr[] sia nella definizione che nella dichiarazione della funzione.



    codice:
    void stringBubbleSort( char *strPtr[], int numString );
    ***Ciao***

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 © 2025 vBulletin Solutions, Inc. All rights reserved.