![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
Добрый вечер
у меня есть input.txt который генерит програмка она выводит такой оутпут 1 sdf 3 closed fsd 0 fsdf 0 fsdf 0 2 sdf 4 closed fsd 0 fsdf 0 fsdf 0 fgdf 0 3 sdf 1 closed fsd 0 как мне прочитать такой файлик , если у меня первые четыре строки фиксированные , а остальное зависит , от того что в них найдено ...т.е. если в 3 строке находиться 2 это значит что после 4 строки будет 4 строки sdfsd 0 sdfsd 5 например я делаю так :
это естественно не работает , даже на одном варианте..подскажите как решить такую задачку? |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
В чём проблема-то?
Раз у тебя всё по строкам, то я бы читал fgets()'ом. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
а можно пример, а то я с с++ не дружу уже))..а то что из начальных данных нужно читать разное кол-во других данных?
|
|||
|
||||
inside_pointer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
\n не будет считаться ожидаемым символом, т.к. это один из символов пустого пространства, это будет равнозначно
|
||||
|
|||||
Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
ну с этим вроде нормально) хотя может можно и без \n
|
|||
|
||||
inside_pointer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
в смысле у тебя блоки идут(функция их не воспримет как отдельные)
|
|||
|
||||
inside_pointer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
пользуясь fgets'ом ты читаешь строку и у тебя даже число читается как строка потом из строки вырезаешь всё до перевода строки sscanf(line, "%s", cmpline); (cmpline символьный массив длиной в 100) для сравнения строк используется функция stcmp которая возвращает -1, 0, 1 strcmp(cmpline, "2") == 0 дальше задаёшь параметр для цикла с fgets'ом, она не будет следить пустая строка там или нет, но и fscanf тоже не будет следить, если не применишь спецприёмы с квадратными скобочками типа %[^\n] для остановки на каждом переводе слежку для fgets'а можно задать с помощью той же функции сравнения strcmp(line, "\n") == 0 |
|||
|
||||
Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
мне просто надо прочитать сначала кусок ,из него понять скоко в нем будет пар,и читать это кол-во пар ,после него ,,,..это все пишеться в массив с индексов 1 например..и так далее,...эти кучки нужно записывать в индексированные массивы.. я не очень понимаю ,как мне например читать
строку например с 5 по , какойто разделительный знакк .. ? |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
что то она на eof материться
)мм, спасибо большое , очень выручили)!!! Это сообщение отредактировал(а) Su_ - 12.9.2008, 12:17 |
|||
|
||||
inside_pointer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
здесь на примере не файла а потока ввода, обрабатывается кусок, проходим до тройки, после неё до нуля считаем количество строк (если две - пара есть)
ты спрашивал про символы, как читать с пятого символа строки если line[1000] = "12345"; то читать с тройки надо printf("%s\n", line+2); выведет 345 (line - это &line[0] - это как бы первый символ line+1 - второй символ, line+2 - третий символ) Это сообщение отредактировал(а) inside_pointer - 12.9.2008, 23:39 |
|||
|
||||
Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
ну как я понимаю line[1000] = "12345"; это sprintf(line,"12345");
и на строчке while ((p = fgets(line, MAXLINE, stdin)) != NULL) { , она зацикливаеться сама на себе ( |
|||
|
||||
Rpahut |
|
|||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 2 Всего: 7 |
Su_, я не понял чего ты пытаешься сделать =), но после вот этого кода у тебя в переменной i будет лежать количество строк, а указатели на сами строки - в массиве line. Естесна они пронумерованы начиная с нуля.
--------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
|||
|
||||
Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
что то не работает ,
ругаеться сюда buf = malloc(filesize+1); и так error C2440: '=' : cannot convert from 'void *' to 'char *' |
|||
|
||||
inside_pointer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
sscanf не может зациклиться сама на себе, т.к. это не scanf scanf работает с потоком ввода пока он не закончится, а sscanf работает со строкой пока она не закончится там закомментированные строки их надо в поток ввода вписать 1 sdf 3 closed fsd 0 fsdf 0 fsdf 0 она(программа) дойдёт до тройки, после тройки посчитает строки пока не встретится ноль |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |