[C] Problema con intero da file

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
johnnny
Prode Principiante
Messaggi: 37
Iscrizione: mercoledì 9 maggio 2012, 20:31
Desktop: gnome-2d
Distribuzione: zorin

[C] Problema con intero da file

Messaggio 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;
} 
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [C] Problema con intero da file

Messaggio 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;
} 
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 15 ospiti