我对 c++ 中的 fgets 有问题
I have an issue with fgets in c++
我做了一个小练习来读取一个包含一个长字符串的文件并将其加载到字符串数组中。到目前为止,我有:
char* data[11];
char buf[15];
int i = 0;
FILE* indata;
indata = fopen( "somefile.txt", "r" );
while( i < 11)
{
fgets(buf, 16, indata);
data[i] = buf;
i++;
}
fclose( indata );
somefile.txt: "aaa
等。。
这将读取 15 个字符,将该字符串添加到数组中并获取接下来的 15 个字符。问题是数组总是等于最后一个字符串,所以如果最后一个字符串是"ccccv"整个数组,data[0] = "ccccv",data[1] = "ccccv",data[2] = "ccccv"等等。
有谁知道为什么会发生这种情况以及是否有更好的方法可以做到这一点?谢谢
data
中的每个指针都将指向相同的内存区域,即buf
。您需要使用 strcpy
+ malloc
.
也似乎您有一个"次要"缓冲区溢出。 buf
大小为 15,您正在阅读 16 个字符。
相关文章:
- 我似乎对if/else的基本语句有问题:/
- 我在范围内未声明的错误类有问题
- 我的C++语言蛮力算法有问题
- 我关于函数"Assert"的C++代码有问题
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- C++类中的友元函数有问题?
- 我对数组即 0x6dfe78 有问题
- 我对 std::unique(算法)C++有问题
- 使用 fstream 库并在屏幕上打印的文件有问题?
- 这个模板为什么有问题?如何正确编译
- 我对 MyGraph 属性顶点名称和边权重有问题
- delete[]有问题,如何部分删除内存
- 在C++中使用exit()退出程序有问题吗
- 跳转到if(false)块有问题吗
- 查找有问题的宏
- 使用 rand() 和 srand() 有问题
- C++ 回文程序总是给出 0(假)作为输出问题;我的代码哪里有问题?
- 我在 C++ "out_of_range at memory location"有问题
- 我在 c++ 中的 AES 代码有问题。明文正在更改,但加密邮件是相同的。我找不到我的错误
- 我对 c++ 中的 fgets 有问题