Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - scanf vettroe di stringhe
Forum - C/C++ - scanf vettroe di stringhe

Avatar
Umberto (Member)
Pro


Messaggi: 156
Iscritto: 27/09/2011

Segnala al moderatore
Postato alle 14:29
Mercoledì, 11/04/2012
scusate , se compilo questo codice :
Codice sorgente - presumibilmente C/C++

  1. char var[1000][1000];
  2. tvar = 0;
  3. scanf("%s\n",var[tvar]);


non mi da errori , ma quando lo eseguo mi dice Segmentation fault
come compiler uso gcc


PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 15:47
Mercoledì, 11/04/2012
Testo quotato

Postato originariamente da Umberto:

scusate , se compilo questo codice :
Codice sorgente - presumibilmente C/C++

  1. char var[1000][1000];
  2. tvar = 0;
  3. scanf("%s\n",var[tvar]);


non mi da errori , ma quando lo eseguo mi dice Segmentation fault
come compiler uso gcc



Dovrebbe essere

int tvar = 0;

se non l'hai dichiarata prima e soprattutto

scanf("%s",var[tvar]);

ma non sono questi i problemi per un segmentation fault. Probabilmente il problema è da qualche altra parte del codice.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
giackserva (Member)
Newbie


Messaggi: 11
Iscritto: 15/04/2011

Segnala al moderatore
Postato alle 19:30
Mercoledì, 11/04/2012
la scanf vuole 2 parametri:
la stringa di formato
l'indirizzo di memoria in cui vuoi che vada a finire l'input

tu gli passi come secondo parametro var[tvar]

dovresti passargli &var[tvar] infatti l'operatore & restituisce l'indirizzo della variabile!

PM Quote
Avatar
Umberto (Member)
Pro


Messaggi: 156
Iscritto: 27/09/2011

Segnala al moderatore
Postato alle 19:41
Mercoledì, 11/04/2012
l' errore capit anche se metto &
e non mi capita se commento quella parte del codice

Ultima modifica effettuata da Umberto il 11/04/2012 alle 19:42


PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 435
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 22:18
Mercoledì, 11/04/2012
1)per gli array non va la & sulla scanf ,il nome dell'array è già un puntatore ad una cella di memoria
2)togli lo \n dalla scanf e vedrai che funziona
3)provato e funziona
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  
  5.  int tvar = 0;
  6.  char var[1000][1000];
  7.  printf("stringa: ");
  8.  scanf("%s",var[tvar]);
  9.  printf("\noutput: %s\n\n",var[tvar]);
  10.  
  11. return 0;
  12. }



test:
Codice sorgente - presumibilmente Plain Text

  1. bonny@ubuntu:~$ gcc e.c -o e
  2. bonny@ubuntu:~$ ./e
  3. stringa: prova
  4.  
  5. output: prova
  6.  
  7. bonny@ubuntu:~$



ciaoooo:k:

Ultima modifica effettuata da Bonny il 11/04/2012 alle 22:21


Bonny
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 9:59
Giovedì, 12/04/2012
Avevo già suggerito di togliere il \n nella mia risposta ...

Hai provato?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Umberto (Member)
Pro


Messaggi: 156
Iscritto: 27/09/2011

Segnala al moderatore
Postato alle 17:42
Giovedì, 12/04/2012
scusa nessuno ora va


PM Quote