[C] itoa() convertire intero a stringa

di il
9 risposte

[C] itoa() convertire intero a stringa


char * itoa(int number){
  char *str=(char *)malloc(sizeof(char)*20);
  if(sprintf(str,"%d",number)<1){
    exit(-1);
  }
  return str;
}
il mio problema è che funziona anche se invoco itoa() senza passargli nessun argomento.
Come è possibile effettuare un controllo tale da impedire questa situazione.

9 Risposte

  • Re: [C] itoa() convertire intero a stringa

    Ciao,

    non riesco a riprodurre il problema. Con questo codice
    
    #include <stdio.h>
    #include <stdlib.h>
    
    char * itoa(int number){
      char *str=(char *)malloc(sizeof(char)*20);
      if(sprintf(str,"%d",number)<1){
        exit(-1);
      }
      return str;
    }
    
    
    int main(int argc, char const *argv[])
    {
    	char* prova = itoa();
    	return 0;
    }
    
    ottengo in fase di compilazione l'errore che mi aspetterei, cioè
    too few arguments to function ‘itoa’
    Prova a fornire maggiori dettagli, e magari un esempio del codice che usi.
  • Re: [C] itoa() convertire intero a stringa

    In questo caso è da preferire snprintf()....
    compilatore?
    s.o.?
  • Re: [C] itoa() convertire intero a stringa

    @minomic, banale: stai usando il compilatore in modalita' C++ (controlli piu' stringenti).
    Il file deve avere estensione '.c' e non '.cpp' o '.cxx' (o altra estensione che attiva la modalita' C++)
  • Re: [C] itoa() convertire intero a stringa

    migliorabile ha scritto:


    @minomic, banale: stai usando il compilatore in modalita' C++ (controlli piu' stringenti).
    Il file deve avere estensione '.c' e non '.cpp' o '.cxx' (o altra estensione che attiva la modalita' C++)
    Veramente non è così. Il file ha estensione '.c' e come compilatore sto utilizzando gcc da riga di comando:
    $ gcc -Wall -o main main.c
    main.c: In function ‘main’:
    main.c:15:2: error: too few arguments to function ‘itoa’
    main.c:4:8: note: declared here
    main.c:15:8: warning: unused variable ‘prova’ [-Wunused-variable]
  • Re: [C] itoa() convertire intero a stringa

    Allora e' l'ordine: hai prima la definizioni di itoa e poi la usi.
  • Re: [C] itoa() convertire intero a stringa

    A me continua a non compilare in nessun modo. Se uso questo codice
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char const *argv[])
    {
    	char* prova = itoa();
    	return 0;
    }
    
    char * itoa(int number){
      char *str=(char *)malloc(sizeof(char)*20);
      if(sprintf(str,"%d",number)<1){
        exit(-1);
      }
      return str;
    }
    ottengo
    main.c: In function ‘main’:
    main.c:9:2: warning: implicit declaration of function ‘itoa’ [-Wimplicit-function-declaration]
    main.c:9:16: warning: initialization makes pointer from integer without a cast [enabled by default]
    main.c:9:8: warning: unused variable ‘prova’ [-Wunused-variable]
    main.c: At top level:
    main.c:13:8: error: conflicting types for ‘itoa’
    main.c:9:16: note: previous implicit declaration of ‘itoa’ was here
    Invece con
    
    #include <stdio.h>
    #include <stdlib.h>
    
    char * itoa(int number);
    
    int main(int argc, char const *argv[])
    {
    	char* prova = itoa();
    	return 0;
    }
    
    char * itoa(int number){
      char *str=(char *)malloc(sizeof(char)*20);
      if(sprintf(str,"%d",number)<1){
        exit(-1);
      }
      return str;
    }
    
    ho
    main.c: In function ‘main’:
    main.c:8:2: error: too few arguments to function ‘itoa’
    main.c:4:8: note: declared here
    main.c:8:8: warning: unused variable ‘prova’ [-Wunused-variable]
    Non capisco come faccia Paolovox a compilare...
  • Re: [C] itoa() convertire intero a stringa

    E' normale che ti generi un errore a tempo di compilazione dato che non passi il parametro alla funzione itoa(int i).
  • Re: [C] itoa() convertire intero a stringa

    Paolovox ha scritto:


    E' normale che ti generi un errore a tempo di compilazione dato che non passi il parametro alla funzione itoa(int i).
    Ma non eri tu a dire a maggio che il problema era proprio questo?
  • Re: [C] itoa() convertire intero a stringa

    Giusto però non mi ricordo il perchè. C'ho riprovato e mi da un errore per conflitto del tipo itoa() e itoa(int number), sempre con gcc. Chiedo venia chissà che caso esoterico stavo affrontando.
Devi accedere o registrarti per scrivere nel forum
9 risposte