Передача переменных в системную функцию в C

У меня есть код C:

#include  #include  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); 

Заранее спасибо! 🙂

Использовать snprintf

 #include  #include  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); } 

system , в отличие от printf , не принимает несколько параметров, она принимает только один параметр, const char *command . Поэтому вам нужно сначала собрать свою полную командную строку в памяти, а затем передать ее системе.

Примером может служить:

 char buf[32]; sprintf(buf, "echo %d", a); system(buf); 

Вам нужно позаботиться, чтобы не писать больше символов в buf, чем у buf есть место для. Возможно, вам захочется прочитать snprintf страницу snprintf чтобы переписать код более безопасным способом.

Также: если ваш код действительно скомпилирован, пожалуйста, скомпилируйте его с более высоким уровнем предупреждения. По крайней мере, это дало бы вам предупреждения о том, что вы вызываете систему с большим количеством параметров, чем вам нужно.

Функция System не имеет параметров форматирования, таких как printf, вместо этого системная функция принимает строку C в качестве параметра.

Посетите следующий сайт для получения дополнительной информации.

http://www.tutorialspoint.com/c_standard_library/c_function_system.htm