Считывание командной строки в одну строчку - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д