Oppure

Loading
03/12/09 15:54
francescosup
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ì:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{

    int i=0;
    int n;
    int pass;
    typedef char array[30]; //dichiarazione esplicita dell'array nome che ho messo sotto nello struct!!
    
    typedef struct {
            array nome;
            int pass;
            } tipo_scheda;
            
    tipo_scheda user[i];
    
    printf("Quanti utenti vuoi inserire?\n");
    scanf("%d", &n);
    
    while (i<n){
          printf("INSERISCI NOME UTENTE: ");
          scanf("%s", &user[i].nome);     
          printf("INSERISCI PASSWORD: ");
          scanf("%d", &user[i].pass);
          i++;
               }
    
           printf("ELENCO UTENTI E PASSWORD\n\n");
             i=0;
             while (i<n){
         
                      printf("NOME UTENTE: %s \n PASSWORD %d",user[i].nome, user[i].pass);
                       i++;
                        }
    printf("FINE");
    
    system("PAUSE");	
  return 0;
    
}




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


Poi..E' giusto scrivere:
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!
aaa
03/12/09 16:19
pierotofy
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?


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++.
Il mio blog: piero.dev
03/12/09 21:00
Lawliet
Si concordo con pierotofy per la funzione gets, però potrebbe usare la funzione fgets dando una dimensione così può evitare errori di buffer overflow :)
aaa