PDA

Visualizza la versione completa : [C] Errore nella lettura di caratteri da file


tina8
02-02-2011, 19:54
Ciao a tutti, ho scritto il seguente frammento di programma che tra le varie cose deve leggere i primi 10 caratteri del file testo.txt, ma quando effettua la chiamata a fgets restituisce un puntatore a null segno che non viene letto alcun carattere, avete qualche suggerimento su quale sia il problema ? Vi posto il codice, Grazie



#include <unistd.h>
#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
char *ptr;
char *prova;
DIR *dp;
struct dirent *dirp;
struct dirent1 *dirp1;
int size;
char directory[526];
char *stringa;
char *nomefile=(char *)malloc(1000*sizeof(char));;
char nomefile1[526]="/testo.txt";

while(strcmp(directory,"/")!=0){

getcwd(directory, sizeof(directory));
printf("%s\n", directory);
ptr = chdir("..");

if ( (dp = opendir(directory)) == NULL){
printf("can't open %s", argv[1]);
exit(-1);
}
while ( (dirp = readdir(dp)) != NULL){
if(strcmp(dirp->d_name,"testo.txt")==0){
printf("File trovato\n");
printf("File %s\n", dirp->d_name);
nomefile=strcat(directory,nomefile1);
FILE *prova;
prova=fopen(nomefile,"r");
if (prova==NULL){
printf("non posso aprire il file");
exit(1);
}

stringa=(char *)malloc(100*sizeof(char));
char *st = (char *)malloc(100*sizeof(char));
st=fgets(stringa,10,prova);
printf("%s\n",stringa);
exit(0);
}



}

}
printf("File non trovato\n");
}

shodan
02-02-2011, 22:00
Intanto togli questa riga e modifica cosė:


// char *st = (char *)malloc(100*sizeof(char));
fgets(stringa,10,prova); // fgets restituisce stringa in caso di successo.

if (ferror(prova))
perror();
else
printf("%s\n",stringa);




http://www.cplusplus.com/reference/clibrary/cstdio/perror/
http://www.cplusplus.com/reference/clibrary/cstdio/ferror/

Loading