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,我也会观察到相同的行为。我该如何解决?
答案 0 :(得分:1)
由于y[0]
是一个指针,它可以指向(或进入)x
。您观察到的行为表明它确实存在。如果y[0]
指向(或进入)x
,则更改x
的内容将更改y[0]
指向的内容。