/* Write and rewrite */
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int main(int argc,char* argv[]){
int i = 0;
int w_rw = 0;
int fd = -1;
int bw = -1;
int nob = 0;
char* file_name = "myfile";
char buff[30] = "Dummy File Testing";
w_rw = 1; // 1 - write , 2 - rewrite
nob = 1000000; // No of bytes to write
printf("\n File - Create,Open,Write \n");
for(i = 0; i < w_rw; i++){
printf("fd:%d line : %d\n",fd,__LINE__);
if((fd = open(file_name,O_CREAT | O_RDWR))< 0){
perror("Open failed!");
return -1;
}
printf("fd:%d",fd);
if((bw = write(fd,buff,nob)) < 0){
perror("Write failed!");
return -1;
}
printf("\n Bytes written : %d \n",bw);
}
return 0;
}
I'm getting a write error, Bad address failure when tried to write 1MB bytes of data. why is that so ?
According to man of write write() writes up to count bytes from the buffer pointed buf to the file referred to by the file descriptor fd so you are overrunning the string buffer.
If you want to just fill the file with that string try fwrite, you can specify the string length and the total number of times to write the buffer (nob/strlen(buff) ?).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With