Pagina 1 di 1

[C] Problema con intero da file

Inviato: giovedì 21 giugno 2012, 22:11
da johnnny
Allora se scrivo un intero su file ( ovviamente se provo ad aprire il file non vedo l'intero che ho scritto ma solo memoria sporca), poi provo a leggerlo nel modo che vedrete sotto, che credo sia giusto, come faccio a visualizzare su schermo il vero valore, perchè se provo a fare una printf di a subito dopo mi da un numero stranissimo.

Cosa devo mettere al posto dei trattini?

Codice: Seleziona tutto

#include<string.h>
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
#include<stdlib.h>

int main(int argc, char argv[]){
        char c;
	int b=10,a;
	int fd=open("provo.txt", O_RDWR);
	write(fd, (void *)&b, sizeof(int));
	read(fd, &a, sizeof(int));
        a=atoi(&a);
	printf("\n Valore di A = %d\n", a);	
        //------------------------------???	

return 0;
} 

Re: [C] Problema con intero da file

Inviato: giovedì 21 giugno 2012, 22:20
da Zoff
atoi() non ti serve e devi chiudere e riaprire il file prima di leggerlo.

Codice: Seleziona tutto

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

int main(int argc, char* argv[]){
    int b=10,a;

    int fd=open("provo.txt", O_RDWR);
    write(fd, (void *)&b, sizeof(int));
    close(fd);

    fd=open("provo.txt", O_RDWR);
    read(fd, &a, sizeof(int));
    close(fd);

    printf("\n Valore di A = %d\n", a);

    return 0;
} 
Oppure riposizioni il puntatore del file descriptor all'inizio:

Codice: Seleziona tutto

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

int main(int argc, char* argv[]){
    int b=10,a;

    int fd=open("provo.txt", O_RDWR);
    write(fd, (void *)&b, sizeof(int));
    lseek(fd,0,SEEK_SET);
    read(fd, &a, sizeof(int));
    close(fd);

    printf("\n Valore di A = %d\n", a);

    return 0;
}