2

我做一个小练习来读取一个包含一个长字符串的文件并将其加载到一个字符串数组中。到目前为止,我有:

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: “啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊”

ETC..

这读入 15 个字符,将该字符串添加到数组并获取下一个 15。问题是数组总是等于最后一个字符串,所以如果最后一个字符串是“ccccv”整个数组,data[0] = “ccccv” , data[1] = "ccccv", data[2] = "ccccv" 等等。

有谁知道为什么会发生这种情况以及是否有更好的方法来做到这一点?谢谢

4

1 回答 1

2

中的每个指针都data将指向同一个内存区域,即buf. 您需要使用strcpy+ malloc

也好像你有一个“轻微的”缓冲区溢出。buf大小为 15,您正在阅读 16 个字符。

于 2012-04-23T17:26:16.577 回答