Pagina 1 di 1
spostare contenuto file in array di char C
Inviato: martedì 9 giugno 2015, 22:48
da gian2991
buonasera,
ho un problema con un programma, in pratica io ho n file di testo così chiamati: file1.txt,file2,txt....
io devo chiedere all'utente quanti processi simulare, ogni processo legge il proprio file(processo1->file1.txt, processo2->file2.txt...)
il problema è che non riesco a realizzare questa cosa,
avevo provato cosi
Codice: Seleziona tutto
for(i=0;i<nodesNumber;i++){
sprintf(file,"file%i.txt",i+1);
}
il problema è che mi prende la stringa file2.txt, non mi prende il contenuto del file, e non riempie l'array di char buf0 man mano, ma sovrascrive quello che trova prima.
come potrei fare? tenendo conto che devo usare solo system calls e solo la sprintf mi era concessa
Re: spostare contenuto file in array di char C
Inviato: martedì 9 giugno 2015, 22:54
da Zoff
Per leggere un file devi usare fopen() e fread().
Ecco un esempio:
Codice: Seleziona tutto
#include <stdio.h>
int main()
{
FILE *fp;
char buff[255];
fp = fopen("/tmp/test.txt", "r");
fscanf(fp, "%s", buff);
printf("1 : %s\n", buff );
fgets(buff, 255, (FILE*)fp);
printf("2: %s\n", buff );
fgets(buff, 255, (FILE*)fp);
printf("3: %s\n", buff );
fclose(fp);
return 0;
}
Re: spostare contenuto file in array di char C
Inviato: martedì 9 giugno 2015, 22:58
da gian2991
Il mio problema a però è mettere tutto in un ciclo per poterlo fare con n file, a farlo con un file riesco
Re: spostare contenuto file in array di char C
Inviato: martedì 9 giugno 2015, 23:00
da gian2991
Poi, correggimi se sbaglio ma la fopen non è una system calls
Re: spostare contenuto file in array di char C
Inviato: martedì 9 giugno 2015, 23:10
da Zoff
se devi usare solo system calls allora devi usare open() e read().
Codice: Seleziona tutto
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#define N_FILE 5
#define MAX_FILE_SIZE 1024
int main()
{
int i, fp;
char filename[20];
char contents[N_FILE][MAX_FILE_SIZE];
for( i=0; i<N_FILE; i++){
sprintf(filename,"/tmp/file%d.txt",i);
fp = open(filename, O_RDONLY);
read(fp, contents[i], MAX_FILE_SIZE);
close(fp);
}
for( i=0; i<N_FILE; i++){
printf("content[%d] = '%s'\n",i,contents[i]);
}
return 0;
}
Re: spostare contenuto file in array di char C
Inviato: martedì 9 giugno 2015, 23:21
da gian2991
grazie mille funziona, però un'ultima cosa:
Codice: Seleziona tutto
for(i=0;i<nodesNumber;i++){
sprintf(filename,"file%d.txt",i+1);
if((fd_in=open(filename,O_RDONLY,0644))==-1);
write(2,"OPEN: -1",sizeof(char)*8);
read(fd_in,contents[i],128);
close(fd_in);
}
for(i=0;i<nodesNumber;i++){
printf("content[%d] = '%s'\n",i,contents[i]);
}
la open mi ritorna -1, però il programma sembra funzionare
Re: spostare contenuto file in array di char C
Inviato: martedì 9 giugno 2015, 23:26
da Zoff
Hai messo il ; nella riga dell'if invece delle graffe
Re: spostare contenuto file in array di char C
Inviato: martedì 9 giugno 2015, 23:26
da gian2991
oh scusa errore mio non ho visto il ; dopo l'if