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++ - Struct
Forum - C/C++ - Struct

Avatar
francescosup (Normal User)
Newbie


Messaggi: 7
Iscritto: 08/11/2009

Segnala al moderatore
Postato alle 16:54
Giovedì, 03/12/2009
Salve amici,
ho un problema con il costruttore di dati struct!
Allora io voglio che in una struttura mi venga salvato nome utente e password. faccio così:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6.  
  7.     int i=0;
  8.     int n;
  9.     int pass;
  10.     typedef char array[30]; //dichiarazione esplicita dell'array nome che ho messo sotto nello struct!!
  11.    
  12.     typedef struct {
  13.             array nome;
  14.             int pass;
  15.             } tipo_scheda;
  16.            
  17.     tipo_scheda user[i];
  18.    
  19.     printf("Quanti utenti vuoi inserire?\n");
  20.     scanf("%d", &n);
  21.    
  22.     while (i<n){
  23.           printf("INSERISCI NOME UTENTE: ");
  24.           scanf("%s", &user[i].nome);    
  25.           printf("INSERISCI PASSWORD: ");
  26.           scanf("%d", &user[i].pass);
  27.           i++;
  28.                }
  29.    
  30.            printf("ELENCO UTENTI E PASSWORD\n\n");
  31.              i=0;
  32.              while (i<n){
  33.          
  34.                       printf("NOME UTENTE: %s \n PASSWORD %d",user[i].nome, user[i].pass);
  35.                        i++;
  36.                         }
  37.     printf("FINE");
  38.    
  39.     system("PAUSE");   
  40.   return 0;
  41.    
  42. }





Non riesce ad andare!!
Dopo aver digitato tutti i nomi utenti e password smette di funzionare...


Poi..E' giusto scrivere:
Codice sorgente - presumibilmente Plain Text

  1. scanf("%s", &user[i].nome);



Per il fatto che c'è %s, posso inserire stringhe come : "Antonio de Michele", oppure li spazi non li accetta!!
Perchè feci un altro programma simile e dava problemi quando mettevo gli spazi.

Grazie a tutti.

Francesco Perrino!

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6109
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 17:19
Giovedì, 03/12/2009
Testo quotato

Postato originariamente da francescosup:

Non riesce ad andare!!
Dopo aver digitato tutti i nomi utenti e password smette di funzionare...



Che significa non riesce ad andare? Come si comporta il programma? Errori?


Testo quotato


Per il fatto che c'è %s, posso inserire stringhe come : "Antonio de Michele", oppure li spazi non li accetta!!
Perchè feci un altro programma simile e dava problemi quando mettevo gli spazi.



scanf tronca la stringa al primo spazio che incontra... usa la funzione gets al suo posto. (e' buggata e puo' essere vittima di buffer overflow, ma non credo che la sicurezza sia un problema nel tuo programma..). Altrimenti usa la getline del C++.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 22:00
Giovedì, 03/12/2009
Si concordo con pierotofy per la funzione gets, però potrebbe usare la funzione fgets dando una dimensione così può evitare errori di buffer overflow :)


"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
cit. theprogrammer
PM Quote