Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [c] Eof

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    38

    [c] Eof

    Ciao a tutti,
    ho un problema creando un file in scrittura, non riesco a terminare la scrittura con l' EOF.
    Ossia...
    -->
    printf("inserisci il nome del file da aprire\n");
    gets(nomefile);
    printf("si dovranno inserire adesso dei dati all' interno del FILE\n");
    if ((fptr = (fopen(nomefile, "w"))) == NULL)
    printf("errore nell' apertura del FILE\n");
    else
    {
    printf("inserisci i valori nell' array\n");
    puts("EOF per uscire");
    scanf("%lf", &num);
    while(!feof(fptr))
    {
    fprintf(fptr, "%lf", num);
    scanf("%lf", &num);
    }
    }
    fclose(fptr);
    -->
    quando mi viene chiesto inserisco Control+Z, ma la lettura del File continua...cosa mi sfugge?

  2. #2
    Tu non stai leggendo da un file, ma dalla console, per cui dovresti controllare la presenza di EOF su stdin. Comunque secondo me ti conviene basarti sul valore di ritorno della scanf, che restituisce 0 se non è riuscita ad acquisire quello che le hai chiesto (in questo caso un valore in virgola mobile).
    codice:
    printf("Inserisci i valori nell'array\n");
    puts("Inserisci un valore non numerico per uscire");
    while(!scanf("%lf", &num))
    {
        fprintf(fptr, "%lf", num);
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    38
    Intanto grazie per l' aiuto, mi potresti spiegare se possobile 1)perchè hai fatto in questo modo;2)perche con il control+Z visto che è un windows e quindi dovrebbe riconoscerlo come comando di EOF in realtà non lo vede come tale?

    Grazie mille.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    38
    Volevo chiedere un altra cosa se possibile la seguente istruzione:

    char *array[50];
    char buffer[MAXLUNG+1];

    for(i=0; i<N; i++)
    {
    printf("inserisci la stringa %d\n",i);
    gets(buffer);
    array[i] = malloc(strlen(buffer)); <-- qui mi va sempre in errore il compiler -->
    if(array[i] == NULL)
    {
    printf("problemi in allocazione\n");
    break;
    }
    else
    strcpy(array[i], buffer);
    }

    l'errore mi dice che 30 invalid conversion from `void*' to `char*'

  5. #5
    [b]
    ...
    array[i] = malloc(strlen(buffer)); <-- qui mi va sempre in errore il
    ...
    array[i] = (char *) malloc(strlen(buffer));

    ciao

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.