I read the input file , which has 911 lines , and want to copy these 911 lines into the output file , after making a few changes to each line..
I am getting segmentation fault when i run this.. I dont know why.. can anyone please help..
#include<stdio.h>
void main()
{
int i;
FILE *fin,*fop;char* str;
fin=fopen("atk561011.txt","r");
if(fin=NULL) printf("ip err");
fop=fopen("svmip.txt","w");
if(fop=NULL) printf("op err");
for(i=1;i<=911;i++)
{
fgets(str,150,fin);
if((i>300&&i<=360)||(i>600&&i<=660))
str[7]='1';
else
str[7]='0';
fputs(str+7,fop);
putc('\n',fop);
}
fclose(fin);
fclose(fop);
}
For a start, this is wrong:
Should be:
(the same goes for
fop, of course). And if you didn’t succeed opening the file – don’t just print an error, exit, because what are you going to read from? Keep in mind that the output ofprintfis buffered and in case of a segfault you won’t always see it at all, even if it ran before the fault.Another thing: you don’t allocate memory for
str, yet write into it withfgets.And another thing: reading a pre-defined amount of lines from the file is probably a bad idea. It’s better to read from the input until there is an end of file, or until a required amount of lines has been read.