【发布时间】:2021-04-07 22:53:48
【问题描述】:
我写了这段代码:
#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”实际上不包含任何内容。 我真的很感激有一种方法可以解决这个问题,并解释为什么代码可以工作并且即使存在这个问题也能得到正确的输出。
【问题讨论】: