Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [C]Problema immissione dati

    salve a tutti ho un piccolo problema ho creato un piccolo programma per la gestione dei dati riguardanti gli esami universitari(dico piccolo ma so 1500 righe di codice)

    solo che ho un problema durante l'immissini dei dati esempio pratico:


    printf("Inserisci il codice dell'insegnamento da creare\n");
    scanf("%d", &Cod);

    questa parte di codice prende in input un numero e lo memorizza nella variabile Cod e fin qui tutto regolare ma se per caso sbaglio e inserisco invece di un numero un carattere mi va in loop e mi salta 3 4 righe di codice!!

    qualcuno ha qualche suggerimento per evitare tutto cio??

    un altra cosa mica per caso in C c'è qualche libreria pre fatta per il controllo della Data senza che mi metta a scrivere tutto il programma per il controllo??

    grazie in anticipo a tutti coloro che mi risponderanno..

    un altra cosa qualcuno gentilmente sapremme dirmi se esiste qualche comando per controllare se un file esiste Esempio c'è quello diciamo standard per controllare se un file viene aperto correttamente:

    if ((Insegnamento = fopen("Insegnamenti.dat", "rb+")) == NULL)
    printf("\nNon posso aprire il file di input.\n");
    else

    a me serve sapere se esiste un comando simile pero per il controllo di esistenza del sudetto file!!

    grazie in anticipo a tutti coloro che mi risponderanno..e mi scuso per la mia noobiagine

  2. #2
    1 - potresti acquisire una stringa, oppure carattere dopo carattere e verificare che il dato di input sia quello atteso (nel tuo caso un intero)

    2 - per sapere se un file esiste lo devi aprire in modalità "r" e verificare cosa ritorna la jopen (nel caso che sia non NULL ricordati di chiudere il file, se non lo usi).
    Questo sistema non è sicuro al 100% in quanto il file potrebbe esistere ma tu non avere i diritti di leggerlo, in questo caso fopen ritorna sempre NULL. Se usi un sistema unix like potresti utiizzare stat , che però non è portatile. Ci saranno anche funzioni per windows, che sicuramente ti suggeriranno, ma non sono portatili.
    Potrebbe esserti utile crearti una funzione
    int fileExists ( const char *nome_file );
    in cui scrivi l'implementazione per i sistemi che utilizzi, selezionatibili utilizzando il preprocessore

    ciao
    sergio

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    6
    semplicemente fai un controllo

    printf("inserisci un numero o dato che è");

    do
    {

    scanf("%d"&num); //Se è un char metti %c a seconda del tipo di dato che metti


    if ((num>='a')&&(num<='z'))||(num>='A')&&(num<='Z')
    {

    }

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    6
    semplicemente fai un controllo

    printf("inserisci un numero o dato che è");

    do
    {

    scanf("%d"&num); //Se è un char metti %c a seconda del tipo di dato che metti


    if ((num>='a')&&(num<='z'))||(num>='A')&&(num<='Z')
    {

    }

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    6
    semplicemente fai un controllo

    printf("inserisci un numero o dato che è");

    do
    {

    scanf("%d"&num); //Se è un char metti %c a seconda del tipo di dato che metti


    if ((num>='a')&&(num<='z'))||(num>='A')&&(num<='Z')
    {
    break;
    }
    dato=num;
    }

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da fekkyo
    semplicemente fai un controllo

    printf("inserisci un numero o dato che è");

    do
    {

    scanf("%d"&num); //Se è un char metti %c a seconda del tipo di dato che metti


    if ((num>='a')&&(num<='z'))||(num>='A')&&(num<='Z')
    {
    break;
    }
    dato=num;
    }
    Questo codice non e' corretto ... (a parte la virgola che manca nella scanf) ... che senso ha confrontare un valore numerico (come e' num) con un carattere?

    Rivedi questo codice ...

    P.S. Perche' hai postato 3 volte?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    infatti l'ho provato ma non funziona granchè... nessuno sa darmi una mano

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da Donnie85Darko
    nessuno sa darmi una mano
    Guarda che mondobimbi ti ha gia' risposto correttamente ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    scusa non l'avevo visto... per il fatto delle stringhe ok ho capito cosa fare.. ma non ho capito che devo fare per quel che riguarda l'esistenza del file.. cioè devo realizzare un'altra funzione che esegue il controllo il fatto è che a me serve all'interno di una funzione per controllare se sto file esiste cioè

    questo è un pezzo del mio programma prima di aprire il file vorrei controllare se esiste il file ma non ho la piu pallida idea di come fare

    /void CreaStu()
    {
    FILE *Studenti;
    int i;
    struct Stud bianca={0,"","",0,0,0,0,"","",0};
    if ((Studenti=fopen("Studente.dat","wb+"))==NULL){
    printf("non se po apri il file\n");}
    else
    for(i=0;i<9;i++){
    fwrite(&bianca, sizeof(struct Stud),1,Studenti);}
    fclose(Studenti);
    }/

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Usa la fopen in modalita' r e controlla l'handle restituito.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.