有人可以帮助我解决我的错误...
继承人发生了什么:
我的程序称为“打开”
这是我的输出:
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/