将变量传递给C

时间:2015-05-18 14:16:37

标签: c linux function input system

我有这个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);

提前谢谢! :)

3 个答案:

答案 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