C ++中的FILE I / O引发错误

时间:2015-05-08 20:42:47

标签: c++ file-io

int main(array<System::String ^> ^args)
{

FILE* fp;
char str[1];
int x = 0;

fp = fopen("C:\\input.txt", "r");

do{
    x = fscanf(fp, "%s", str);

    if (x != -1)  // So that the last string is not printed twice
    {
        printf("%s ", str);
    }

  }while (x != -1);

return 0;

}

此程序打印正确的输出。但是在打印之后,它会在窗口中显示“程序停止工作”的错误。如果记事本文件中没有文本,即如果它是空白,则表示没有错误。请解释一下!

2 个答案:

答案 0 :(得分:2)

问题是你有一个{1}数组的一个字节,你正在读取字符串。您需要使用足够大的数组来容纳最大的数据。

答案 1 :(得分:1)

首先,你的主要功能的陈述看起来非常像c ++而不是C.

其次从声明char str[1];声明一个大小为1的字符数组。这意味着我们可以在这个数组中存储1个字符,所以如果我们有char str[128];,我们可以存储128个字符在它(不要忘记\ 0)。

所以这个程序试图将字符串读入你的字符数组但是在字符串的第一个字母之后它没有地方存储字符串的其余部分,这就是它崩溃的原因