Я не вижу ничего плохого в вашем коде, но вот несколько советов
Хорошая привычка - создавать функции и вызывать их вместо того, чтобы иметь все встроенные функции, например
#define FILENAME "data.txt"
void writeFile()
{
FILE *fp;
int b = 10;
fp = fopen(FILENAME, "w");
//checking if the file exist
if (fp == NULL)
{
perror("File could not be opened for writing\n");
}
else
{
printf("File created\n");
}
fprintf (fp, " %d ", b) ;
fclose(fp);
}
void readFile()
{
int f;
printf("Reading from the file \n");
FILE *fr;
fr=fopen(FILENAME,"r");
fscanf (fr, " %d ", &f) ;
fclose(fr);
printf("the data from the file %d \n", f);
}
int main()
{
writeFile();
readFile();
}
затем при чтении из файла я бы посоветовал вам использовать fgets вместо этого, так как это безопаснее использовать, поскольку fscanf имеет тенденцию вызывать перезапись памяти, если значения являются неожиданными.
<- fscanf(fp," %d ", &f );
-> char buf[16]; // some buffer
-> fgets( fp, buf, 10 ); // read as string
-> f = atoi(buf); // convert to int