Считывание командной строки в одну строчку - C (СИ)
Формулировка задачи:
Добрый день, подскажите пожалуйста
есть есть файл emp.lst и мы его работали с ним так
system("cut -d! -f3 emp.lst");
а нужно, чтобы программ считала с командной строки mycut –d! –f3 emp.lst
ошибка:
too many arguments to function ‘system’
Спасибо!
int main(int argc, char *argv[]){
//system("cut -d! -f3 emp.lst");
int i ;
for (i = 0; i < argc; i++){
printf("arg %d: %s\n", i, argv[i]);
}
argv[0] = "cut";
for (i = 0; i < argc; i++){
system("%s " , argv[i] );
}
return 0;
}Решение задачи: «Считывание командной строки в одну строчку»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
if(argc < 2)
fprintf(stderr, "Usage: prog arg [arg...]\n");
else
{
execvp(argv[1], argv + 1);
perror("execv");
}
exit(EXIT_FAILURE);
}
Объяснение кода листинга программы
Вывод списка элементов кода:
- #include
- #include
- #include
- *int main(int argc, char argv[])**
- {
- if(argc < 2)
- {
- fprintf(stderr,
Usage: prog arg [arg...]\n); - }
- else
- {
- execvp(argv[1], argv + 1);
- perror(
execv); - }
- exit(EXIT_FAILURE);
- }
Описание действий:
- Линии 1-3: Включают необходимые для работы программы заголовочные файлы.
- Линия 4: Определяет точку входа в программу - функцию main.
- Линии 5-7: Проверяет, что введенный аргумент командной строки больше одного. Если это условие не выполняется, выводит сообщение об использовании программы.
- Линии 8-11: Если условие проверки выполняется, то программа передает управление команде execvp.
- Линии 12-13: В случае ошибки выполнения команды execvp, выводится сообщение об ошибке с помощью функции perror.
- Линия 15: Программа завершается с кодом ошибки EXIT_FAILURE.