i want to open a file, write some data on it so i have to use (Fopen) ” i can’t use open because i need fopen in some other things ”
now if i want to write on the file using fwrite it just don’t i don’t know why this is what i referred to in my code #option1, but if i get the file descriptor and use normal write method everything works fine see #option 2 below.
anyone can help me to make fwrite works ?
char file_data[256] // has some values
int file_size = strlen(file_data);
FILE *file;
file = fopen(MY_FILE_NAME, "w+");
if(!file){//edited
return false;
}
#option 1//this is not working
fwrite(file_data,1,file_size,file);
#end of option 1
#option 2//this works
int fd = fileno(file);
int x = write(fd,file_data,file_size);//
#end of option 1
EDIT
my file_data is something like this
- 4 bytes is reserved for an integer (required)
- 200 bytes is reserved for a string (optional)
buffered IO operations use a buffer that is managed by the C lib. Your “problem” is that fwrite is buffered meaning that in order to write to the file you most likely need to flush it with
fflush()or just close the file.