gpt4 book ai didi

c - 从文件中读取后,第二个字符数组覆盖第一个字符数组

转载 作者:太空宇宙 更新时间:2023-11-04 06:15:28 24 4
gpt4 key购买 nike

目标是使用 C 从文件(可以是文本或二进制)读取数据,然后附加到现有字符串

我有 2 个字符数组,一个是现有字符串 (s1),另一个是字符串 (s2) 我会将缓冲区字符数组 (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 时,它不再是“hello”,它包括文件中的字符,因此由于某种原因第一个字符数组在内存中被覆盖。为什么会这样?我该如何解决这个问题?

最佳答案

readCounter = fread(buf, sizeof(char), strlen(buf), fp);

这是一个问题。此时,buf 不包含字符串,因此将其传递给 strlen 是错误的。

还有:

char s2[] = "";
...
strcat(s2, buf);

这样不好。当您分配 s2 时,它指向一个空字符串。所以数组的大小可以容纳一个空字符串。通过将 s2 传递给 strcat,您试图附加到它上面——但它没有任何额外空间。

关于c - 从文件中读取后,第二个字符数组覆盖第一个字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46803460/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com