c - 程序可以工作,但是当我调试时它说“" 逐行读取文件时的行
问题描述
我写了这段代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE *actionfpnt;
char* line[70];
actionfpnt = fopen(argv[1], "r");
if (actionfpnt == NULL)
{
printf("Error: opening %s failed\n", "actions");
}
else
{
while (fgets(line, 70, actionfpnt) != NULL)
{
printf("%s\n", line);
}
fclose(actionfpnt);
return 0;
}
}
而 argv[1] 是一个 txt 文件的地址,在这个文本文件中:
Initialize
Fatal_malfunction $$$ cpu Zi7 $$$ 130
Fatal_malfunction $$$ cpu Zi5 $$$ 15
Returned_from_customer $$$ cpu Zi7 $$$ 10
Rename $$$ bloblo12zZzZ $$$ Zbloblo
Returned_from_customer $$$ Zblabla $$$ 10
Finalize
令人困惑的部分是代码实际上可以工作,但是当我尝试调试它时,我在变量“line”中看到:"<error reading characters in string.>"
。输出是:
Initialize
Fatal_malfunction $$$ cpu Zi7 $$$ 130
Fatal_malfunction $$$ cpu Zi5 $$$ 15
Returned_from_customer $$$ cpu Zi7 $$$ 10
Rename $$$ bloblo12zZzZ $$$ Zbloblo
Returned_from_customer $$$ Zblabla $$$ 10
Finalize
当我尝试使用 line 执行任何其他操作时,我不能,因为“line”实际上不包含任何内容。我真的很感激一种解决这个问题的方法,并解释为什么代码工作并得到正确的输出,即使有这个问题。
解决方案
你char line[70];
不想char* line[70];
!
char* line[70];
是一个包含 70 个指针的数组char
。
包括在没有额外终止的情况下fgets()
阅读您想要的行尾:printf
\n
printf("%s", line);
尽管不需要格式化,但使用fputs()
就足够了:
fputs(line, stdout);
推荐阅读
- python - 从 1 通道阵列到带有 if 条件的 3 通道
- javascript - 将类添加到动态变化的元素
- python - 不同的“运行时错误:尝试使用关闭的会话。”
- redirect - 通过 commandButton 操作重定向不适用于 PF 7 中的相对路径
- c# - 是否应该使用此计时器实现安全性?
- android - 我可以在 android apk 中动态下载 Web 应用程序客户端并启动吗?
- networkx - 如何重置 pyviz.networkx.draw 图?
- python - 如何使用任务包装器中的列表分配 luigi 参数
- php - 无法访问评论元?
- c# - Xamarin 表单中的文件关联(Android 不工作)