【发布时间】:2016-03-09 20:20:00
【问题描述】:
char x[30];
char* y[5];
int count = 0;
ifstream i("test.txt", std::ifstream::binary);
x 从 ifstream 缓冲区中读取 30 字节的文件。 y 存储一个随机字符串。
while (i.read(x, sizeof(x)) {
y[count] = x;
printf("%s\n", y[0]); //This prints "test\n"
bzero(x, sizeof(x)); //Clear the contents of array x
printf("%s\n", y[0]); //This prints "\n"
count++
}
对于本示例,假设文件包含小于或等于 150 字节的数据。
为什么这种情况不断发生?即使我使用 memset,我也会观察到相同的行为。我该如何解决?
【问题讨论】:
-
x和y(或y[0])是如何关联的? -
能否提供一个可验证(可编译)的示例?
-
我敢打赌,您在读取循环中将 y[0] 分配给 x,而不是分配内存和复制
-
您正在为
char *y[5]的5 个元素分配内存,不是吗?... y[0] =malloc(SOME_VAL);, ... y[4] = malloc(SOME_VAL ); -
提醒:
y数组是指针数组,而不是字符数组。