gpt4 book ai didi

c - 古怪的行为

转载 作者:太空狗 更新时间:2023-10-29 15:59:38 24 4
gpt4 key购买 nike

我写了这个简单的 C 程序,但不太明白 strcat 的这种奇怪行为

long sum(long col, char* path, char* path2){

printf("%s\n",path2);
strcat(path,".endlines");
printf("%s\n",path2);
return 0;
}

int main(int argc, char* argv[]) {
int n=atoi(argv[1]);
sum(n,argv[2],argv[3]);
exit(EXIT_SUCCESS);
}

strcat 应用于路径,但最终也修改了路径 2。如果有人让我知道发生了什么,我将不胜感激 :) 谢谢

运行

./program 3 example/mountdir/location2.csv example/rootdir/location2.csv

输出:

example/rootdir/location2.csv

endlines

最佳答案

您正在溢出缓冲区。原来的 argv[2] 和 argv[3] 在内存中很可能是连续的。当您 strcat 到 argv[2] 的末尾时,它正在写入 argv[3] 指向的内存。您需要分配新的缓冲区来容纳您尝试创建的更大的字符串。

关于c - 古怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7078349/

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