View Full Version : [C unix] numeri in un file
stella_650
02-07-2008, 11:06
Con il codice che segue voglio generare numeri casuali e scriverli in un file.
Quello che ottengo in output è una lettera e non un numero.
Cosa devo fare per ovviare a questo problema?
int numcas,fd;
srand(time(NULL));
numcas=1+rand()%100;//verificare da 1 a 100 compresi
printf("valore int %d\n",numcas);
fd=creat("TEMP",0766);
write(fd,&numcas,sizeof(numcas));
close(fd);
wingman87
02-07-2008, 11:41
Stai scrivendo in binario sul file, mentre quando lo apri per vedere il contenuto usi un texteditor che ti visualizza la codifica ASCII. Penso sia questo il problema
Non so se ho capito bene, comunque se quello che vuoi ottenere e' un output in formato testo e non binario, devi usare le funzioni di I/O formattato, come fopen e fwrite
DanieleC88
02-07-2008, 12:15
Semplicemente perché stai scrivendo un valore compreso tra 0 e 100 in un file: se non scrivi i caratteri che ne rappresentano il numero e scrivi invece proprio il numero, stai scrivendo un carattere che ha quel particolare codice ASCII, perciò vedi lettere quando apri il file.
Visto che il numero generato non può superare le tre cifre puoi fare una cosa del genere:
char buffer[4];
int n;
int fd;
srand(time(NULL));
n = 1 + rand() % 100;
snprintf(buffer, sizeof(buffer), "%3d", n);
fd = creat("TEMP",0766);
write(fd, &buffer, 3 * sizeof(char));
close(fd);
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.