使用C添加然后删除文本文件中的一行

时间:2019-03-22 03:53:27

标签: c file file-io

我正在尝试编写一个程序,该程序可以将行添加到文本文件中(从实际程序中获取输入),并且可以删除其中包含特定单词的行。当我尝试在末尾添加该行或只是删除一行时,它会按预期工作。当我添加然后删除一行(不一定是同一行)时,就会出现问题。如果我同时执行这两项操作,那么即使不是程序要删除的行,刚刚添加的行也会被删除。这是我的两个操作代码:

void add(char *file, *char info){
     FILE *p = fopen(file, "wt"); // check for error
     fprintf(file, "%s\n", info);// close file;}

对于删除,我们只想删除名称的单个实例(第一个)

void delete(char *file, *char name){

   FILE *old = fopen(file, "rt");
   FILE *new = fopen("temp", "wt");
   char line[1000];
   fgets(line,999,old);
   int deleted = 0;
    while(!feof(csv_old)){
          if(strstr(line, name)==0 || deleted >= 1)
                    fputs(line, new);
            else if(strstr(line,name)!=0)
                    deleted++;
            fgets(line,999,old);}
    // close files

例如,如果我说过:

这个

那个

这个

假设我调用add(“ filename”,“ those”),然后将“ those”正确附加到文件末尾(在新文件中)。但是,如果我致电添加,然后立即致电删除说“这”,我得到:

那个

这个

在新文件中

我完全无法理解为什么会这样。任何帮助将不胜感激

0 个答案:

没有答案