Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - stringa di lunghezza non nota
Forum - C/C++ - stringa di lunghezza non nota

Avatar
sd (Normal User)
Newbie


Messaggi: 4
Iscritto: 23/06/2013

Segnala al moderatore
Postato alle 16:01
Giovedì, 04/07/2013
devo acquisire una stringa di lunghezza non nota e metterla in un array di stringhe, io ho provato così ma ho un errore di segmentazione:

Codice sorgente - presumibilmente C/C++

  1. char *string, *arr[3];
  2. scanf("%s", string);
  3. arr[0]=string;



come posso fare ad acquisire una stringa di lunghezza non nota e metterla in un array di stringhe?
devo passare per forza dalla malloc e realloc o c'è un altro modo per non utilizzare altre librerie?

Ultima modifica effettuata da sd il 04/07/2013 alle 16:01
PM Quote
Avatar
ZioCrocifisso (Member)
Pro


Messaggi: 135
Iscritto: 06/03/2013

Segnala al moderatore
Postato alle 16:51
Giovedì, 04/07/2013
Ti ho già spiegato nell'altro topic che non puoi passare un semplice puntatore a scanf perché non gli dice dove mettere i dati.
Se la stringa non è troppo grande alloca un stringa con char string[1024] per esempio (lunghezza massima 1024 caratteri), e poi usa un loop con getchar, controllando sempre che non hai superato i 1024 caratteri. Oppure, al posto del loop con getchar, usa scanf mettendo però %1024s al posto di %s (questo ti impedisce di avere degli spazi nella stringa però).

PM Quote
Avatar
moloskovic (Member)
Newbie


Messaggi: 3
Iscritto: 04/07/2013

Segnala al moderatore
Postato alle 18:05
Giovedì, 04/07/2013
Quoto ZioCrocifisso. In più le stringhe non possono essere sottoposte ad assegnazione come hai fatto tu.
Innanzitutto, se non erro, dichiarando char *arr[3] ti viene allocato un array di 3 puntatori a carattere, che ti è inutile. Al massimo potresti fare arr[1024][3]. Puoi anche sostituire 1024 con un altro numero o con una costante a patto che sia uguale alla capienza di string.
Per assegnare una stringa si usa la libreria <string.h> e la funzione strcpy(char * destinazione, char * sorgente), nel tuo caso strcpy(arr[0],string) al posto di arr[0]=string.

PM Quote
Avatar
sd (Normal User)
Newbie


Messaggi: 4
Iscritto: 23/06/2013

Segnala al moderatore
Postato alle 18:42
Giovedì, 04/07/2013
vaaaa bene! Grazie ancora ;)

PM Quote