我有这个C代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
printf("Please enter a number:\n");
scanf("%d",&a);
printf("Your number is: %d\n",a);
system("echo %d",a);
}
我对最后一个命令system()
函数感兴趣,为什么我无法打印我的变量,就像我用printf()
打印它一样。我希望能够向用户询问一些输入,让我们说一个字符串,然后将其传递给系统函数。
实际例子:
询问用户文件夹名称
system("mkdir %s", FolderName);
提前谢谢! :)
答案 0 :(得分:8)
使用snprintf
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
char buf[BUFSIZ];
printf("Please enter a number:\n");
scanf("%d",&a);
printf("Your number is: %d\n",a);
snprintf(buf, sizeof(buf), "echo %d",a);
system(buf);
}
答案 1 :(得分:3)
system
不同, printf
不接受多个参数,它只接受一个参数const char *command
。因此,您需要先在内存中构建完整的命令字符串,然后将其传递给系统。
一个例子是:
char buf[32];
sprintf(buf, "echo %d", a);
system(buf);
你需要注意不要把更多的字符写入buf而不是buf有空间。您可能希望阅读snprintf
的手册页以更安全的方式重写代码。
另外:如果你的代码真的编译过,那么请用更高的警告级别编译。至少那会让你警告你正在使用比你应该更多的参数调用系统。
答案 2 :(得分:0)
系统函数没有像printf这样的格式化选项,而是系统函数将C字符串作为参数。
有关详细信息,请查看以下网站。
http://www.tutorialspoint.com/c_standard_library/c_function_system.htm