我在C ++中的脚本给我这个结果没有任何错误:
1 2 按任意键继续......
这是我的计划:
const char* fileName = "kwerendy.txt";
FILE * file = fopen(fileName, "r");
while (! feof(file))
{
printf("1\n");
char* row;
printf("2\n");
fgets(row, 1000, file);
printf("3\n");
int i = 0;
printf("4\n");
cout << "TEXT (line[" << i << "]): " << row;
}
你有任何想法,因为我不知道如何修复它。
答案 0 :(得分:2)
row
未分配值,因此您正在写入任意内存地址 - 这非常糟糕。它是未定义的行为,即使它现在有效,它很可能在将来失败。您需要为fgets
读取的字符分配空间。或者您可以将row
声明为静态数组:
char row[buffer_size];
fgets(row, buffer_size, file);
更好的方法是将ifstream
与string
s:
std::ifstream file(fileName);
std::string line;
int i = 0;
while (getline(file, line)) {
std::cout << "TEXT (line[" << i++ << "]): "
<< line << std::endl;
}