有人可以帮助我解决我的错误...

继承人发生了什么:

我的程序称为“打开”

这是我的输出:

user@host:~$ ./open open A
A
open
Error: Cannot creat ./././.: Is a directory
./././.user@host:~$


为什么输出结果是././././而不是./A/open

我知道问题来自av[2]

printf("%s\n", av[2]);
printf("%s\n", av[1]);
snprintf(av[2], sizeof(av[2]), "./%s/%s", av[2], av[1]);
printf("%s", av[2]);

最佳答案

snprintf(av[2], sizeof(av[2]), "./%s/%s", av[2], av[1]);出于各种原因无效。


使用源和目标重叠为UB的snprinf()
sizeof(av[2])是指针的大小,在这种情况下为8,而不是数组的大小。
av[2]的大小可能不足以保存串联。

关于c - Snprintf在C中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43684223/

10-12 21:30