Ana*_*ana 2 c linux system input function
我有这个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);
}
Run Code Online (Sandbox Code Playgroud)
我对最后一个命令,system()函数以及为什么我无法打印我的变量感兴趣,就像我打印它一样printf().我希望能够向用户询问一些输入,让我们说一个字符串,然后将其传递给系统函数.
实际例子:
询问用户文件夹名称
system("mkdir %s", FolderName);
Run Code Online (Sandbox Code Playgroud)
先感谢您!:)
使用 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);
}
Run Code Online (Sandbox Code Playgroud)
system,与printf不接受多个参数不同,它只接受一个参数,a const char *command。因此,您需要首先在内存中构建完整的命令字符串,然后将其传递给系统。
一个例子是:
char buf[32];
sprintf(buf, "echo %d", a);
system(buf);
Run Code Online (Sandbox Code Playgroud)
您需要注意不要向 buf 中写入的字符多于 buf 的空间。您可能需要阅读手册页以snprintf更安全的方式重写代码。
另外:如果你的代码确实编译过,那么请使用更高的警告级别进行编译。至少这会警告您正在使用比应有的参数更多的参数调用系统。