Cosa c'è di così sbagliato in questa acquisizione

di Anonimizzato8544 il
32 risposte
Salve ragazzi sto facendo 1 programma che mi gestiste una lista a puntatori con il campo informazione che è una stringa ma non riesco ad eseguirlo si blocca subito dopo questa scanf

int main()
{
    int scelta;
    char *string; 
    
    struct nodo *appoggio;
    string=(char*)malloc(sizeof(char));
    appoggio=NULL;
    
    printf("1:inserisci\n");
    printf("2:cancella\n");
    scanf("%d",&scelta);
    
    
    if(scelta==1)
    {
        printf("inserisci la stringa\n");
        scanf("%s",string);//qui muore il mio programma

32 Risposte

  • 
    malloc(sizeof(char));
    
  • E come mai??
  • Ho corretto ma crasha lo stesso ho scritto
    
    
    string=malloc(sizeof(char));
    
    
    
  • Quanto è sizeof(char)?
  • La grandezza di un char 1 byte
  • Quindi puoi accettare un solo carattere per la tua stringa ... e non penso sia quello che vuoi.
  • Si ma crasha anche se faccio così
    
    
    string=malloc(sizeof(char*));
    
  • Ma allora non mi spiego ... una stringa è fatta da "tanti" caratteri, non da un carattere e tanto meno da un puntatore ...

    Come allochi "tanti" caratteri?
  • Devo usare perforza gets()???? io uso %s io sò che così posso acquisire una stringa con scanf
  • Chi ha parlato di gets? Chi ha detto che non puoi usare scanf?

    Ho solo detto che la malloc non va fatta per un solo carattere !
  • E quindi mi puoi dire come devo fare?? non volevo farti arrabbiare
  • Non mi arrabbio ma mi sembra strano che tu non riesca a scrivere quello che ti ho suggerito di fare ..

    Rifletti e provaci ... a cosa serve

    string=(char*)malloc(sizeof(char));

    ?

    TI è stato detto che così allochi un solo carattere ...

    E ti ho detto che una stringa deve prevedere più di un carattere, ad esempio 50 caratteri.

    Cosa devi scrivere quindi?
  • Usare un ciclo che si prende carattere per carattere?
  • Ma dove studi il C tu?

    Devi concentrarti *solo* sulla linea della malloc !
    Devi allocare lo spazio con la malloc per i 50 caratteri della stringa ...
Devi accedere o registrarti per scrivere nel forum
32 risposte