C 中的文件I/O会引发错误

FILE I/O in C++ throws an error

本文关键字:错误 文件      更新时间:2023-10-16
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;
}

此程序打印正确的输出。但是在打印后,它在Windows中引发了一个错误,上面写着"程序停止工作"。另外,如果记事本文件中没有文本,即如果是空白,则不会显示错误。请解释!

问题是您有一个您正在读取字符串的字节的char数组。您需要使用足够大以容纳最大数据的数组。

首先关闭主函数的声明,看起来很像c 不是c。

其次来自语句char str[1];您声明的字符数组是大小1。这意味着我们可以在此数组中存储1个字符,因此,如果我们要有char str[128];,我们可以在其中存储128个字符(不要忘记)。

因此,此程序试图将字符串读取到您的字符数组中,但是在字符串的第一个字母之后,它没有位置存储其余的字符串,这就是为什么它崩溃