FILE *mails;
FILE *tempmails;
mails = fopen("mailer.txt", "r");
tempmails = fopen ("tempmailer.txt" , "a+");
char line[200],templine[200];
char blnklne[]="\n";
while(fgets(line, sizeof line, mails) != NULL)
{
int flag=0;
while(fgets(templine, sizeof line, tempmails) != NULL)
{
if((strcmp(line,templine)==0) || (strcmp(line,blnklne)==0))
{
flag = 1;
}
}
if(flag == 0)
{
fputs(line, tempmails);
}
}
fclose(mails);
fclose(tempmails);
tempmails = fopen ("tempmailer.txt", "r");
remove("mailer.txt");
FILE *newmails;
newmails = fopen("mailer.txt", "a");
while(fgets(templine, sizeof line, tempmails) != NULL)
{
fputs(templine, newmails);
}
fclose(newmails);
fclose(tempmails);
remove("tempmailer.txt");
我为以下目的编写了上述 C 代码:
- 必须读取每一行
mailer.txt
并检查一行是否为空白或重复,如果两个条件都为假,则必须将其输入到临时文件中tempmailer.txt
- 删除文件
mailer.txt
,然后新建一个并复制输入到新文件中,然后删除tempmailer.txt
。
但是在运行时实际发生的是:
- 无论给定的任何条件如何,都从所有行复制(不希望
mailer.txt
的)tempmailer.txt
- 删除
mailer.txt
并创建一个新的mailer.txt
(期望的) - 从原样复制
tempmailer.txt
到新文件(需要) - 删除
tempmailer.txt
(需要)
无论我做什么,我都无法根除这个问题。操作系统是linux。请帮我。提前致谢。