我尝试在Linux中创建一个文件,并在C程序中使用system()
函数给予它可执行权限。代码如下:
# include<stdio.h>
# include<stdlib.h>
# include<string.h>
int main(int argc, char *argv[], char *envp[]){
char s[100];
strcpy(s, "touch ");
strcpy(s, argv[1]);
strcpy(s, "; chmod a+x ");
strcpy(s, argv[1]);
system(s);
return 0;
}
但是,当我用参数“abs”调用编译后的文件时,例如(假设我希望“abs”作为要创建的文件的名称),它会给出这样的输出:
sh: 1: abs: not found
如何修复?这是很重要的,我必须使用C编程和system()
函数。
3条答案
按热度按时间6fe3ivhb1#
看来这个答案对于未来的读者来说是无法理解的,让我试着解释一下strcpy和strcat之间的区别
***strcpy()**将一个字符串复制到另一个字符串中。
***strcat()**函数通过将源字符串追加到目标字符串来连接字符串。
在原始代码中,每次调用“strcpy”函数时,缓冲区中的前一个值都会被覆盖。
最后,由于“s”是“abc”,system()函数尝试执行它,这将产生以下错误:
在修改后的版本中,新值将追加到缓冲区中,而不是覆盖以前的值。
ukqbszuj2#
strcpy将字符串复制到另一个字符串,使用strncat(3)连接字符串。
您的代码应该如下所示:
e0bqpujr3#
该代码应更改为以下代码:
非常感谢评论员!