【发布时间】:2017-12-23 01:47:53
【问题描述】:
我正在尝试将员工 ID 和他们完成的文件数存储在文本文件中。并将文件数添加到 totalFiles 变量中。但是当我输出 totalFiles 的值时,我看到我提供的所有附加输入都存储在文件中,而不是添加预期值。为什么会这样?
代码如下:
#include <stdio.h>
int main(void) {
int n, i, numFiles;
char empid[10];
int totalfiles = 0;
printf("Enter the number of employees\n");
scanf("%d", &n);
FILE *fp;
fp = fopen("employee.txt", "w");
if (fp == NULL) {
printf("Error");
return 0;
}
for (i = 0; i < n; i++) {
printf("For employee %d\n", i + 1);
printf("Enter the employee id\n");
scanf("%s", empid);
fputs(empid, fp);
printf("Enter the number of files done\n");
scanf("%d", &numFiles);
totalfiles += numFiles;
fprintf(fp, "%d", numFiles);
}
fclose(fp);
printf("Total number of files done by all employees : %d", totalfiles);
}
我得到的输出是这样的:
输入员工人数
2
对于员工 1
输入员工编号
33
输入完成的文件数
8
对于员工 2
输入员工编号
20
输入完成的文件数
6
所有员工完成的文件总数:14338206
如果您看到输出,您会注意到输出只是我提供的输入,它们只是彼此相邻。请让我知道我的代码中的错误。提前致谢!
【问题讨论】:
-
14 是(正确的)总和,为什么最后会回显其他值超出了您的代码范围。看起来,你的employees.txt 是以某种方式输出的?
-
可能
14是这段代码输出。338206其他部分读取文件并输出。如果提供的代码是实际代码,则无法复制。 -
@RahulPakhare 正如我和许多其他人已经评论过的,这无法用您在此处介绍的内容来解释。展示更多你的环境,也许这会对它有所启发
-
将
\n添加到最后一个printf。在末尾添加return 0;,以免混淆操作系统。这个程序是从下一个回显文件的批处理作业中调用的吗? -
请从终端逐字复制粘贴您用于运行程序的命令行。