PDA

Visualizza la versione completa : [c] Eof


ciamprix
23-04-2008, 23:30
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?
:dhò:

MItaly
23-04-2008, 23:55
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).


printf("Inserisci i valori nell'array\n");
puts("Inserisci un valore non numerico per uscire");
while(!scanf("%lf", &num))
{
fprintf(fptr, "%lf", num);
}

ciamprix
24-04-2008, 00:01
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.

ciamprix
24-04-2008, 00:44
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*'

mondobimbi
24-04-2008, 09:45
[b]
...
array[i] = malloc(strlen(buffer)); <-- qui mi va sempre in errore il
...


array[i] = (char *) malloc(strlen(buffer));

ciao

Loading