目标覆盖第一字符数组的fread之后是用C来读取文件数据(可以是文本或二进制),然后附加到现有的字符串第二字符数组从文件
我有2个字符数组,一个一个现有的字符串(S1),并且另一个字符串(S2),我会追加缓冲char数组(BUF)到
size_t readCounter = 0;
char buf[16];
char s1[] = "hello ";
char s2[] = ""
while (1) {
readCounter = fread(buf, sizeof(char), strlen(buf), fp);
if (readCounter == 0) {
break;
}
strcat(s2, buf);
}
printf("%s", s1);
printf("%s", s2);
问题:
当我打印出S1,它不再是“你好“,它包含文件中的字符,因此第一个字符数组在内存中被覆盖。为什么会发生?我该如何解决这个问题?
'buf'永远不会被初始化,所以当你调用'strlen'的时候,你在这里要求爆炸。 – tadman
好吧,我把16(缓冲区的大小),以取代strlen(buf) – user3226932
这可能是更好的避免这样的神奇数字,而是使用'sizeof(buf)'。 – tadman