|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2006
Messaggi: 104
|
[C unix] numeri in un file
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? Codice:
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);
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2788
|
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
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Apr 2008
Messaggi: 181
|
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
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
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: Codice:
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);
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:38.



















