spostare contenuto file in array di char C

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
gian2991
Prode Principiante
Messaggi: 55
Iscrizione: sabato 4 aprile 2015, 0:24
Sesso: Maschile

spostare contenuto file in array di char C

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

Re: spostare contenuto file in array di char C

Messaggio 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;
}
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
gian2991
Prode Principiante
Messaggi: 55
Iscrizione: sabato 4 aprile 2015, 0:24
Sesso: Maschile

Re: spostare contenuto file in array di char C

Messaggio da gian2991 »

Il mio problema a però è mettere tutto in un ciclo per poterlo fare con n file, a farlo con un file riesco
gian2991
Prode Principiante
Messaggi: 55
Iscrizione: sabato 4 aprile 2015, 0:24
Sesso: Maschile

Re: spostare contenuto file in array di char C

Messaggio da gian2991 »

Poi, correggimi se sbaglio ma la fopen non è una system calls
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: spostare contenuto file in array di char C

Messaggio 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;
}
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
gian2991
Prode Principiante
Messaggi: 55
Iscrizione: sabato 4 aprile 2015, 0:24
Sesso: Maschile

Re: spostare contenuto file in array di char C

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

Re: spostare contenuto file in array di char C

Messaggio da Zoff »

Hai messo il ; nella riga dell'if invece delle graffe
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
gian2991
Prode Principiante
Messaggi: 55
Iscrizione: sabato 4 aprile 2015, 0:24
Sesso: Maschile

Re: spostare contenuto file in array di char C

Messaggio da gian2991 »

oh scusa errore mio non ho visto il ; dopo l'if
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti