首页 > 解决方案 > 为什么循环执行跳过第一步,在c中处理文件时从第二步开始

问题描述

我是 C 编程的新手,我正在用 C 做一个简单的项目,我必须编写一个函数来将文件名作为输入,并允许他们以 10,000 行的限制编写文件。这是功能。

代码:

void write_mode(void)
{
     char filepath[300];
     char text[1000];
     printf("\t\t\t Filename: ");
     scanf("%s",filepath);
     system("clear");
     FILE *file;
     file = fopen(filepath,"w");
     printf("\n\n");
     for(int i = 1;i < 10001;i++)
     {
          printf("%d ",i); // the bug
          fgets(text,1000,stdin);
          if (strncmp(text,":save\n",1000) == 0)
          {
               system("clear");
               printf("\t\t\t\t Saved\n");
               printf("\t\t\t\t Press Enter to continue");
               getchar();
               fclose(file);
               break;
           }

           else if (strncmp(text,":exit\n",1000) == 0)
           {
               fclose(file);
               break;
           }
            
           else if (strncmp(text,":n\n",1000) == 0)
           {
                fprintf(file,"%s","\n");
                continue;
           }
           
           else if (strncmp(text,"\n",1000) == 0)
                continue;
      
           else
           {
                fprintf(file,"%s",text);
                continue;
           }
      }
 }
[如果您发现难以阅读代码和拼写错误,请原谅我] 这里发生了什么: 1. 将文件名作为输入 2. 提示用户写入一些数据,允许他们使用一些额外的关键字 3. 打印行号。

所以在这里,循环应该从 1 开始执行,打印行号并等待用户输入移动到下一行。例如,

预期输出:

1 [等待输入]

但相反,我明白了

输出:

1 2 [等待用户输入]

为什么会发生这种情况,我该如何解决这个问题?也将不胜感激有关此的任何建议。谢谢 :)

标签: cloopserror-handlingfile-handling

解决方案


推荐阅读