Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Бо
5 / 5 / 2
Регистрация: 08.12.2009
Сообщений: 158
#1

Поиск строк по образцу - C++

20.04.2010, 21:30. Просмотров 1079. Ответов 16
Метки нет (Все метки)

Если в командной строке заданы опции -x -n <образец>, то необходимо распечатать те строки введенного текста с их номерами, в которых не найден указанный образец, а при указании опций -x <образец> распечатать те же строки, только без номеров.
Че то я не могу понять
Помогите плиз))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2010, 21:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск строк по образцу (C++):

Поиск строк - C++
Здраствуйте, подскажите какие есть реализации или как это сделать примерно. Задача в поиске строк в файле, можно воспользоватся регулярными...

Поиск строк - C++
Мне нужно найти в строке символ &quot;,&quot; и заменить ее. Данная программа демонстрирует нахождение одной запятой #include&lt;iostream&gt; ...

Поиск в массиве строк - C++
Добрый день Возник глупый вопрос. Пытаюсь сделать поис в строковом массиве не как не получается подскажите что не такк. Сам массив...

Поиск строк с нулевыми элементами - C++
Всем привет народ,помогите пожалуйста решить такую задачу:(: Для матрицы А вывести те строки, в которых есть нулевые элементы, или...

Поиск повторяющихся строк в файле - C++
Нужна рекомендация! Есть сгенерированные цепочки (строки) которые записаны и в файл, и естественно выводятся с него. Нужно сделать...

Поиск строк в файле по маске - C++
Программа осуществляет в файле поиск строк, отвечающих заданной маске. В маску могут входить символ «?» (любой печатный символ или пусто)....

16
odip
Эксперт С++
7161 / 3223 / 58
Регистрация: 17.06.2009
Сообщений: 14,164
21.04.2010, 14:12 #2
Че то я не могу понять
Понять что ?
1
Бо
5 / 5 / 2
Регистрация: 08.12.2009
Сообщений: 158
21.04.2010, 14:37  [ТС] #3
Цитата Сообщение от odip Посмотреть сообщение
Понять что ?
ну задачу.

Цитата Сообщение от Бо Посмотреть сообщение
сли в командной строке заданы опции -x -n <образец>
хотябы даже это?
0
Maxim Prishchepa
Эксперт С++
1923 / 1035 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
21.04.2010, 14:41 #4
Цитата Сообщение от Бо Посмотреть сообщение
Если в командной строке заданы опции -x -n <образец>,
скорее всего имеется ввиду, что при вызове вашей программы будет указанно: youProgram.exe -x -n <образец>, смотрите параметры функции main, а именно: agrс и agrv
1
Бо
5 / 5 / 2
Регистрация: 08.12.2009
Сообщений: 158
29.05.2010, 10:20  [ТС] #5
а можна хоть начало программы чуть чуть,чтоб я понял откудава стартовать?)
0
easybudda
Модератор
Эксперт CЭксперт С++
9917 / 5840 / 976
Регистрация: 25.07.2009
Сообщений: 11,014
31.05.2010, 17:58 #6
Цитата Сообщение от Бо Посмотреть сообщение
а можна хоть начало программы чуть чуть
можно!
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char **argv){
/* объявление переменных */
if ( argc == 1 ){
    printf("Usage: %s [-n] [-x <template_to_exclude>] <file_name>\n", *argv);
    exit(EXIT_FAILURE);
}
/* тут сама программа...*/
exit(EXIT_SUCCESS);
}
1
Бо
5 / 5 / 2
Регистрация: 08.12.2009
Сообщений: 158
07.06.2010, 22:58  [ТС] #7
шо то ни как не могу въехать
помогите!

Добавлено через 1 час 23 минуты
у меня ни када не было ни одной задачи на командную строку,поэтому я не могу разобраться.
вот рассматриваю пример и тоже не понятно((

Составить программу, которая печатает аргументы командной строки в прямом порядке, если первым из них идет опция -s, и в обратном порядке, если первый аргумент - опция -r (cаму опцию не распечатывать).
Например, при вызове C:\prog -r мне не дают ананасы
должно быть выдано: ананасы дают не мне


что и куда надо вводить??


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    void main(int argc, char *argv[])
    {
      if(argc<2) 
        { 
          puts("Нужны аргументы в командной строке!");
          exit(-1);
        }
      if(argv[1][0]=='-' && argv[1][1]=='s' && argv[1][2]=='\0')
       { ++argv;  // будем печатать аргументы, начиная с третьего
         while (--argc>1)
           printf((argc>2)?"%s ":"%s\n", *++argv);
       }
       else if(strcmp(argv[1], "-r")==0)
          while (--argc>1)
            printf((argc>2)?"%s ":"%s\n", *(argv+argc));
         else puts("Первым должен быть аргумент -s или -r");
    }
Добавлено через 23 часа 28 минут
ну отреагируйте кто нить!!!!

Добавлено через 6 часов 32 минуты
Хелп!Хелп!Хелп!
0
time2die
51 / 51 / 3
Регистрация: 25.05.2010
Сообщений: 182
07.06.2010, 23:14 #8
Цитата Сообщение от Бо Посмотреть сообщение
Если в командной строке заданы опции -x -n <образец>, то необходимо распечатать те строки введенного текста с их номерами, в которых не найден указанный образец, а при указании опций -x <образец> распечатать те же строки, только без номеров.
Че то я не могу понять
Помогите плиз))
обрати внимание на grep
1
Бо
5 / 5 / 2
Регистрация: 08.12.2009
Сообщений: 158
07.06.2010, 23:16  [ТС] #9
Цитата Сообщение от time2die Посмотреть сообщение
обрати внимание на grep
grep??что это?
0
easybudda
Модератор
Эксперт CЭксперт С++
9917 / 5840 / 976
Регистрация: 25.07.2009
Сообщений: 11,014
08.06.2010, 00:38 #10
Бо, за две с половиной недели так ничего и не придумалось? А ведь это довольно лёгкое задание, дальше-то что будет? Вот, изучайте:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
/*
    Extendet cat program. Options:
    -n : string numbers.
    -e "some string" : pattern to exclude strings contains it.
    file_name : name of input file. Single - for stdin.
*/
 
int main(int argc, char **argv){
    char * progName, * fileName, * pattern, buf[BUFSIZ];
    int countEnabled, i;
    long nRow;
    FILE * fin;
    
    /* default values */
    progName = *argv;
    fileName = NULL;
    pattern = NULL;
    *buf = 0;
    countEnabled = 0;
    nRow = 0;
    fin = NULL;
    
    if ( argc < 2 ){
        fprintf(stderr, "Usage: %s [-n] [-e \"pattern\"] <file_name>\n", progName);
        exit(EXIT_FAILURE);
    }
    
    /* arguments */
    for ( i = 1; i < argc; ++i ){
        if ( argv[i][0] == '-' ){
            switch ( argv[i][1] ){
                case 'n' :
                    countEnabled = 1;
                    break;
                case 'e' :
                    if ( ++i > argc - 2 ){
                        fprintf(stderr, "%s: option -e used without pattern!\n", progName);
                        exit(EXIT_FAILURE);
                    }
                    pattern = argv[i];
                    break;
                case '\0' :
                    fin = stdin;
                    break;
                default :
                    fprintf(stderr, "%s: unknown option: %s\n", progName, argv[i]);
                    exit(EXIT_FAILURE);
            }
        }
        else if ( i > argc - 1 ){
            fprintf(stderr, "%s: the last parametre should be a filename!\n", progName);
            exit(EXIT_FAILURE);
        }
        else
            fileName = argv[i];
    }
    
    /* opening the file */
    if ( ! fin ) {
        if ( ! fileName ){
            fprintf(stderr, "%s: no input file name given!\n", progName);
            exit(EXIT_FAILURE);
        }
        if ( ( fin = fopen(fileName, "r") ) == NULL ){
            fprintf(stderr, "%s: can't open file %s for input!\n", progName, fileName);
            exit(EXIT_FAILURE);
        }
    }
    
    while ( fgets(buf, BUFSIZ, fin) ){
        if ( pattern )
            if ( strstr(buf, pattern) )
                continue;
        if ( countEnabled )
            printf("%03ld: %s", ++nRow, buf);
        else
            printf("%s", buf);
    }
    if ( ferror(fin) ){
        perror("ferror");
        exit(EXIT_FAILURE);
    }
    if ( fin != stdin )
        fclose(fin);
    
    exit(EXIT_SUCCESS);
}
Цитата Сообщение от Бо Посмотреть сообщение
grep??что это?
man grep
1
Бо
5 / 5 / 2
Регистрация: 08.12.2009
Сообщений: 158
08.06.2010, 18:56  [ТС] #11
easybudda, спасиба огромнейшее!!!)))))

Добавлено через 47 минут
да и ещея так понял,что это все что написано является функцией?нужно теперь написать ввод числа и какого либо текста??а образец у нас находится в файле??
чесно очень туго что то дается!то ли это лето оказывает влияние ,то ли я такой бестолковый.
подскажите плиз)
0
easybudda
Модератор
Эксперт CЭксперт С++
9917 / 5840 / 976
Регистрация: 25.07.2009
Сообщений: 11,014
08.06.2010, 19:09 #12
Бо, сохраните это в файл к примеру program.c скомпилируйте и запустите из командной строки
program.exe -n -e exit program.c

кстати, сейчас вижу, что написал слегка коряво... но исправлять уже лениво, попробуйте сами, если найдёте...
1
Бо
5 / 5 / 2
Регистрация: 08.12.2009
Сообщений: 158
08.06.2010, 19:26  [ТС] #13
Цитата Сообщение от easybudda Посмотреть сообщение
сохраните это в файл к примеру program.c скомпилируйте и запустите из командной строки
program.exe -n -e exit program.c
сохранил.открыл в меню пуск командная строка(первый раз в жизни) и что теперь??писал -n -e exit program.c,перетаскивал файл program.c ..не пойму как с ней работать.
объясните плиз.
0
easybudda
Модератор
Эксперт CЭксперт С++
9917 / 5840 / 976
Регистрация: 25.07.2009
Сообщений: 11,014
08.06.2010, 19:29 #14
Цитата Сообщение от Бо Посмотреть сообщение
открыл в меню пуск командная строка(первый раз в жизни)
Поздравляю!
Для простоты переложите и program.exe и program.c в корень диска С:
а потом в консоли
c:
cd \
program.exe -n -e exit program.c
1
Бо
5 / 5 / 2
Регистрация: 08.12.2009
Сообщений: 158
08.06.2010, 19:37  [ТС] #15
Цитата Сообщение от easybudda Посмотреть сообщение
Поздравляю!
cпc)))

Цитата Сообщение от easybudda Посмотреть сообщение
переложите и program.exe и program.c в корень диска С:
а потом в консоли
мля я не понимаю этих слов
переместить файлы
Цитата Сообщение от easybudda Посмотреть сообщение
program.exe и program.c
на С диск,а потом вкомандной строке ввести??
0
08.06.2010, 19:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2010, 19:37
Привет! Вот еще темы с ответами:

Массив строк, не правильный поиск - C++
Вводим имя, инструмент, год рождения, время обучения. Хочу вывести имя ученика играюшего на скрипке, но он упорно выводит имена всех....

Поиск строк, начинающихся с пробела. - C++
Нужно посчитать количество строк в файле, начнающихся с пробела и вывести количество в выходной файл. Выдает ошибку=( Почему? ...

Обработка строк и поиск подстроки - C++
Нужно исправить ошибки, не знаю что это и как исправить 4 шт) недопустимо, левый операнд имеет тип &quot;unsigned int (__thiscall...

Поиск определенных строк в текстовом файле - C++
Здравствуйте. Есть файл &quot;file.txt&quot; в котором есть строки: Bread: 3 Milk: 1 Chicken: 4 Juice: 3 Potatoes: 2 Tomatoes: 1 ...


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

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

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