C 中的文件I/O会引发错误
FILE I/O in C++ throws an error
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个字符(不要忘记 )。
因此,此程序试图将字符串读取到您的字符数组中,但是在字符串的第一个字母之后,它没有位置存储其余的字符串,这就是为什么它崩溃
相关文章:
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 如何在文件和行号中抛出错误
- 防止在C++中选择错误文件时提升 xml 解析器崩溃
- AMQP-CPP >处理程序中的错误文件描述符
- Xcode OSX上的C++构建失败,出现多个错误文件IO..不可用:在macOS 10.15中引入
- 为什么生成文件返回 g++: 错误: h 文件或目录 make: *** [生成文件:12: 测试] 错误 1?
- 警告:打开错误文件(/build/opencv/modules/videoio/src/cap_ffmpeg_impl.
- Ubuntu C++ 编译器错误: g++: 错误: 文件.cpp: 没有这样的文件或目录
- main.cc:5:30:致命错误:文件夹/file.h:没有这样的文件或目录
- C++ LNK2005"已定义"错误 - 文件引用自身
- C++:模拟餐饮公司计费程序-无法将错误数据输出到错误文件
- 博兰德C++链接器错误c文件包括
- Visual Studio 2015 代码覆盖率错误文件
- 使用system()与Gnuplot进行绘图会导致错误:文件不可读
- 是否存在fseek/ftell可能给出错误文件大小的情况
- g++编译错误.h文件
- c++编译错误:.o文件未找到
- 打开错误文件的错误消息
- Ndk-build输出添加符号错误.文件格式错误