Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Elena_Tu
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
1

Считывание командной строки в одну строчку

02.10.2012, 06:58. Просмотров 873. Ответов 5
Метки нет (Все метки)

Добрый день, подскажите пожалуйста
есть есть файл emp.lst и мы его работали с ним так
system("cut -d! -f3 emp.lst");

а нужно, чтобы программ считала с командной строки mycut –d! –f3 emp.lst

C
1
2
3
4
5
6
7
8
9
10
11
12
13
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;
}
ошибка:
too many arguments to function ‘system’


Спасибо!
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2012, 06:58
Ответы с готовыми решениями:

Считывание с командной строки
Добрый день, подскажите пожалуйста: у меня есть программа которая должна выполнять то же что и ...

Вывод прогресса в одну строку командной строки
Дано - программа на С.Кусок кода: for (j=0;j&lt;asize;j++){ //получение данных по...

Перевести одну строчку с С++ в С
помогите перевести cout &lt;&lt; (i == 0 || j == 0 || i == N + 1 || j == M + 1 ? (char)178 : a) &lt;&lt; (j...

Считывание данных из ответа командной строки
Добрый день. Не тривиальная для меня задача. Командой route print получаю список маршрутов:...

при выводе записей из базы они выводятся в одну строчку, а надо чтобы каждая запись начиналась с новой строки.
Я только начинаю изучать ASP подскажите где ошибка, при выводе записей из базы они выводятся в одну...

5
kazak
3065 / 2386 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
Завершенные тесты: 1
02.10.2012, 07:48 2
Тут либо собирать все аргументы в одну строку (функции strcpy, strcat), либо все параметры командной строки заключать в кавычки, тогда они будут интерпритироваться как один параметр.
0
Nameless One
Эксперт С++
5798 / 3448 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
02.10.2012, 10:18 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Можно заюзать exec*:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#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);
}
Bash
1
2
3
4
5
6
7
~/samples/c $ cat emp.lst
foo!bar!baaz
baaz!bar!foo
~/samples/c $ ./sample cut -d! -f3 emp.lst
baaz
foo
~/samples/c $
1
Elena_Tu
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
02.10.2012, 20:24  [ТС] 4
Спасибо, но все равно получается чтобы добиться результата нужно писать в командной строке писать ./mycut cut .... а в этом и смысл чтобы программа делала то же самое что и Если бы просто в командной строке написали cut -d! -f3 emp.lst толко вместо cut было бы mycut
0
Nameless One
Эксперт С++
5798 / 3448 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
03.10.2012, 00:56 5
Elena_Tu, ну замени первый элемент argv на cut перед вызовом execvp.

Не по теме:

Преподаватель сказал написать аналог cut, а нам ой как не хочется? ;)

0
Elena_Tu
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
03.10.2012, 17:20  [ТС] 6
у кого-нибудь есть идеи как дополнить код (задачка похожая на order_pizza из учебника Head First C)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
 
int main(int argc, char *argv[]){
        char *delimeter = "";
        char *field ="";
        int count = 0;
        char ch;
 
        while((ch=getop(argc, argv, "d:f:")) != EOF){
                switch(ch){
                        case 'd':
                                delimeter = optarg;
                                break;
                        case 'f':
                                field = optarg;
                                break;
                        default:
                                fprintf(stderr, "unknown option: '%s\n", optarg);
                                return 1;
                }
        }
 
        argc -= optind;
        argv += optind;
 
        if(delimeter[0])
               .....................
 
 
        if(field[0])
                ...........................
 
        puts("vot chto vveli");
        for (count = 0; count < argc; count++)
                puts(argv[count]);
 
        return 0;
}
Спасибо
0
03.10.2012, 17:20
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2012, 17:20

Js в одну строчку
Подскажите готовые сервисы через которые можно пропустить js и получить на выходе js код в одну...

Калькулятор в одну строчку
Нашел на Форуме. Немного переделал, добавил и изменил. В функциях Cos,Sin,Tan вместо Radian,...

перевести одну строчку на с++
case (operation_list.ItemIndex) of 0: ..............


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.