Форум программистов, компьютерный форум CyberForum.ru

вывести номера строк исходного файла и номер позиции в строке - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
phenomenoN
0 / 0 / 0
Регистрация: 03.05.2010
Сообщений: 15
03.05.2010, 22:42     вывести номера строк исходного файла и номер позиции в строке #1
помогите плз написать на "c" программу на строки, со строками раньше не сталкивался...Заранее спс

вывести номера строк исходного файла и номер позиции в строке,где встречается это слово.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2010, 22:42     вывести номера строк исходного файла и номер позиции в строке
Посмотрите здесь:

C++ В каждой строке матрицы найти и вывести минимальный элемент и его номер в строке
Создать файл целых чисел, содержащий номера всех локальных максимумов исходного файла в порядке возрастания C++
Вывести номер или номера максимальных элементов C++
C++ Найти порядковый номер слова максимальной длины в строке и номер позиции, с которой оно начинается
C++ Определить в строке номера позиции слова с заданным номером
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
03.05.2010, 22:56     вывести номера строк исходного файла и номер позиции в строке #2
C
1
2
3
4
5
6
#include<stdio.h>
 
int main(){
    system("grep slovo -n file");
    return 0;
}
пример работы этого мега-алгоритма:
[Vourhey@ three]$ ./a.out
1:dsf;lsdkf;ls slovo df;lsk
6:sdf sfsd slovo
А вот позицию найди сам
phenomenoN
0 / 0 / 0
Регистрация: 03.05.2010
Сообщений: 15
03.05.2010, 23:25  [ТС]     вывести номера строк исходного файла и номер позиции в строке #3
спс, тольк поясни поз что означает
system("grep slovo -n file")
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
03.05.2010, 23:32     вывести номера строк исходного файла и номер позиции в строке #4
phenomenoN, запуск команды grep с параметрами.
phenomenoN
0 / 0 / 0
Регистрация: 03.05.2010
Сообщений: 15
03.05.2010, 23:47  [ТС]     вывести номера строк исходного файла и номер позиции в строке #5
а позицию тоже с помощью grep можно найти?
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
03.05.2010, 23:54     вывести номера строк исходного файла и номер позиции в строке #6
Цитата Сообщение от phenomenoN Посмотреть сообщение
а позицию тоже с помощью grep можно найти?
Ответ найдет только внимательный форумчанин :
Цитата Сообщение от Vourhey Посмотреть сообщение
А вот позицию найди сам

ЗЫ. grep - это shell, под виндой эта команда не пройдет
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
04.05.2010, 00:01     вывести номера строк исходного файла и номер позиции в строке #7
phenomenoN, позицию можно с помощью strstr() получить, если от возвращённого ей указателя на подстроку отнять указатель на начало строки.

Добавлено через 6 минут
Цитата Сообщение от M128K145 Посмотреть сообщение
grep - это shell, под виндой эта команда не пройдет
Не, ну можно же CygWin поставить, и будет в его консоли и grep, и sed, и awk какой-нибудь...

phenomenoN, заводите счётчик строк и буфер под чтение строки из файла. Читаете по строке целиком, увеличиваете счётчик, ищите функцией strstr() указатель на подстроку, если нашёлся - выводите номер строки (счётчик), разницу указателей (позиция в строке) и собственно строку...
phenomenoN
0 / 0 / 0
Регистрация: 03.05.2010
Сообщений: 15
04.05.2010, 20:13  [ТС]     вывести номера строк исходного файла и номер позиции в строке #8
всем спасибо за содействие

Добавлено через 19 часов 36 минут
надо написать программу, которая убирает из файла комментарий в стиле /* ... */ (считываю по строкам)
нашел 2 включения через strstr, как теперь убрать подстроку между этими включеними, т.е чтобы в output комментарии не печатались



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
#include <stdio.h>
#include <string.h>
 
 
int comment(FILE*, FILE*,  const char* , const char*);
char str[256];
char *c,*l;
while(fgets(str,256,in)!=NULL)
{
    c=strstr(str,start);
    l=strstr(str,finish);
}
 
 
int main (int ac, char **av)
{
    FILE *in;
    FILE *out;
    char c,prev_c;
    int flag, flag1, incomment_long,incomment_str;
    const char* start = "/*"; //find finish and sart
    const char* finish = "*/";
    if (ac != 3) printf("Wrong number of arguments!\n");
    in = fopen (av[1],"rt");
    out = fopen (av[2],"wt");
    comment(in,out, start, finish);
    
 
    fclose (in);
    fclose (out);
}
~
~

Добавлено через 30 минут
можно ли найти длину строки через n=strlen(str);
и печатать в файл через for (i=0,i<n,i++);
вот только проблема как написать printf, если мы считывали по строкам, а написать надо по символам...
phenomenoN
0 / 0 / 0
Регистрация: 03.05.2010
Сообщений: 15
07.05.2010, 12:45  [ТС]     вывести номера строк исходного файла и номер позиции в строке #9
Цитата Сообщение от easybudda Посмотреть сообщение
phenomenoN, заводите счётчик строк и буфер под чтение строки из файла. Читаете по строке целиком, увеличиваете счётчик, ищите функцией strstr() указатель на подстроку, если нашёлся - выводите номер строки (счётчик), разницу указателей (позиция в строке) и собственно строку...

как будет выглядеть разница указателей, и как ее распечатать?
printf ("%s",index)? %s? или %c?

Добавлено через 8 часов 49 минут
все, вроде разобрался
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2010, 13:14     вывести номера строк исходного файла и номер позиции в строке
Еще ссылки по теме:

Для каждой пары скобок в строке напечатать номер и их позиции в тексте (используя стек) C++
Написать функцию сортировки строк исходного файла по длине C++
C++ Вывести номера строк в которых * встречалась более 2 раз

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
07.05.2010, 13:14     вывести номера строк исходного файла и номер позиции в строке #10
Цитата Сообщение от phenomenoN Посмотреть сообщение
как будет выглядеть разница указателей, и как ее распечатать?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
...
size_t cnt; /* счётчик строк */
char buf[SOME_ENOUGH_SIZE]; /* буфер под строку */
char *ss = "something to find"; /* подстрока, которую нужно искать */
char *p;
FILE *f;
...
if ( ! ( f = fopen("file.txt", "r") ) )
  return 1;
cnt = 0;
while ( fgets(buf, sizeof(buf), f) ){
  ++cnt;
  if ( p = strstr(buf, ss) )
    printf("%d:%d %s", cnt, p - buf, buf);
}
...
Yandex
Объявления
07.05.2010, 13:14     вывести номера строк исходного файла и номер позиции в строке
Ответ Создать тему
Опции темы

Текущее время: 12:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru