c - 为什么循环执行跳过第一步,在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 [等待用户输入]
为什么会发生这种情况,我该如何解决这个问题?也将不胜感激有关此的任何建议。谢谢 :)
解决方案
推荐阅读
- r - Tidyr:删除字符串直到某个字符
- angular - 错误:未找到 [object Object] 的组件工厂。你把它添加到@NgModule.entryComponents 了吗?角 7
- python - 如何根据列条件将选定列从数据框中复制到另一个
- c# - 如何编组包含未知大小的 int 数组的结构?
- trend - 试图理解缺失值
- python - 运行脚本时出现意外的 EOF
- python - 如何使用变量作为值循环 tweepy 的 status.entities 路径?
- java - 使用 Oracle 瘦 JDBC 执行 PreparedStatement 时出现 AssertionError
- django - 在 Django 中有没有办法创建一个产品模型,其中一些字段将直接在管理视图中创建?
- r - 我在 r 中的传说没有显示。可能是什么问题?