文件处理:代码停止运行
file handling: the code stops running
#include <stdio.h>
main()
{
FILE* fp;
fp = fopen("a.text", "w+");
int yes = 1, count = 0;
char tree[30];
while (yes) {
printf("enter the name of the treen");
scanf("%s", tree);
fprintf(fp, "%sn", tree);
printf("do you want to enter more trees?enter 0 if no and 1 if yesn");
scanf("%d", &yes);
count++;
}
char treeArr[count][30];
int i = 0;
for (i = 0; i < count; i++) {
fscanf(fp, "%s", &treeArr[i]);
printf("%s", treeArr[i]);
}
fclose(fp);
}
代码的这一部分不起作用。
char treeArr[count][30];
int i = 0;
for (i = 0; i < count; i++) {
fscanf(fp, "%s", &treeArr[i]);
printf("%s", treeArr[i]);
}
我需要在文件中写下树的名称,然后将其放入字符串数组中,以便我可以计算每个树的百分比。
这是一个问题。请提供合适的解决方案。
1.当您沿着Tu校园行走时,您会在途中看到许多不同物种的树木。
园艺中心已经准备了从CSE部门到大门的途中的每棵树的清单。
您必须报告每个树种的百分比。
输入
输入您的计划包括园艺部门观察到的每一棵树的物种清单;.txt文件中的每行一棵树。没有物种名称超过30个字符。
输出
打印以Tu的名称(按百分比排序),其次是其代表的人口的百分比。
问题是您的文件指针fp
指向while
循环之后的文件结束(您写入文件中)。因此,随后的读取操作(fscanf
)将立即返回EOF
。
您可以在阅读文件之前将文件指针重置为开始:
fseek(fp, 0L, SEEK_SET);
如果错误检查您的库呼叫(fopen
,scanf
,fscanf
等)。
%s
指定器外观是char*
,但您所传递的是char (*)[30]
。即使它们指向相同的内存,它们是不同的类型。
删除参考操作员
fscanf(fp,"%s",treeArr[i]);
^^^^^^^^^^
您还应该倒带/重置fp
文件描述符的文件指针,在循环之后,指向文件的末尾fscanf
返回EOF。
fseek(fp, 0L, SEEK_SET);
// Or
rewind(fp);
相关文章:
- 如何在linux终端中同时编译和运行c++代码
- 尝试用java代码编译和运行c++代码
- 不同/较旧的处理器运行c++代码的方式是否不同
- 无法在 geany 上运行代码。无法执行构建命令
- 运行代码时,c++ 会终止进程
- 编译多个C++文件.调用二进制文件以运行代码
- 分段故障 运行C++代码时出现 SIGSEGV
- 如何分析在 Windows 上运行C++代码?
- 编译器资源管理器(godbolt)如何安全地运行代码?
- 如何在 vim (windows) 中编译和运行 c++ 代码
- 无法在 Visual Studio 代码中生成和运行 C++ 代码
- 连续运行C++代码和 Python 代码
- 在静态初始化期间运行代码
- C++ .我正在尝试通过使用开关内的数组来获取用户输入,但是当我运行代码时,它显示分段错误?
- 我最近更改了编译器路径以运行 c++ 代码,但现在我无法运行任何 python 代码。我该如何解决这个问题?
- 如何在Visual Studio Code的终端内运行C++代码?
- 在注入的 Dll 的 DllMain 中运行代码导致注入超时
- 并行和顺序运行代码时会产生不同的结果
- 运行代码时C++错误
- 在 CortexM0 中从 RAM 运行代码时出现硬故障