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
から、新しいファイルを作成し、新しいファイルに 1 つずつコピーして入力し、削除しtempmailer.txt
ます。
しかし、実際に実行すると次のようになります。
- 指定された条件に関係なく、すべての行からコピーします(望ましく
mailer.txt
ない)tempmailer.txt
- 削除
mailer.txt
して新しいmailer.txt
(望ましい)を作成します - から新しいファイルにそのままコピーし
tempmailer.txt
ます(望ましい) - 削除し
tempmailer.txt
ます (望ましい)
私が何をしても、この問題を根絶することはできません。OSはリナックスです。私を助けてください。前もって感謝します。