C. Переход на следующую строку.
Здравствуйте.
Есть файл с последовательным доступом (текстовый), из которого нужно последовательно с каждой строки считывать какие-то данные.
Как перевести «курсор» на следующую строку? Размер текущей строки не задается, т.е. могут подсунуть любой.
Например, есть такой файл:
4 5 4 2 1
7 4 1 2 1 7 5 4
2 4 2
4 5 4 1 2
1 4
Просто fscanf(in, «\n%d», &Deck[c].K) в цикле все равно заглатывает числ а в 1й строке, а не по 1му столбцу.
Danmer ★★
03.12.06 03:32:11 MSK
Re: C. Переход на следующую строку.
То бишь, с любого места текущей строки мы получим доступ к первому элементу следующей. Далее еще один read (fd, &ch, 1) — считывает первый символ следующей.
henturis ★
( 03.12.06 12:19:22 MSK )
Ответ на: Re: C. Переход на следующую строку. от henturis 03.12.06 12:19:22 MSK
Re: C. Переход на следующую строку.
вам несомненно нужно присмотерться к man fseek
Как перейти на следующую строку в файле c
Подскажите как перейти на новую строку при посимвольном чтении из текстового файла? натыкаюсь на нужный символ и принудительно перехожу на новую строку, считываю дальше.
Форумчанин
Регистрация: 26.09.2010
Сообщений: 570
‘\n’ — символ перехода на новую строку, я лично обычно считываю по строкам (getline)
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
Регистрация: 30.12.2010
Сообщений: 4
я знаю что \n это переход на новую строку!
Вопрос как перейти на новую строку не дожидаясь \n. Повторяю, я не записываю в файл, а считываю посимвольно.
Delphi Warrior
Регистрация: 15.08.2008
Сообщений: 2,501
собственно есть функции для установки курсора (ну или позиции) в файле это допустим fseek и fsetpos!
Они смещают положение на n байт!
Но не проще ли считывать всю строку! Допустим так
char *s; int i; ifstream fin(input.txt); if (fin) while (!fin.eof()) < fin >> s; for (i = 0; i < strlen(s); i++) < if (s[i] == '$') < //нашли break; // глушим цикл читаем следующую строку >> >
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq — 636-954-303
Hacker19_90 |
Посмотреть профиль |
Найти ещё сообщения от Hacker19_90 |
Как перейти на следующую строку в файле c
Профиль
Группа: Участник
Сообщений: 19
Регистрация: 24.9.2007
Где: Киев
Репутация: нет
Всего: нет
Есть входной файл:
Код |
1 127.1 73.6 53.5 2 127.4 73.5 53.9 |
Необходимо прочитать первых три значения в строчке, потом перейти на следующую, то есть четвертое значение не трогать.
До этого писал на pascal, поэтому не знаю как реализовать переход на новую строку на с++.
Ниже набраный код не переходит на новою строку.
Код |
char str[80]; do f1>>time[k]>>T1[k]>>T2[k]; f1.getline(str,80); > k++; while (!f1.eof()) |
Помогите с написанием
Это сообщение отредактировал(а) Krav — 28.3.2009, 22:18
Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина
Репутация: 29
Всего: 69
Цитата(Krav @ 28.3.2009, 22:01 ) |
четвертое значение не трогать |
а вы потрогайте
Код |
#include #include |
int main(int argc, char *argv[])
int time; double T1, T2, rubbish;
std::ifstream in(«file.txt»);
do in >> time >> T1 >> T2 >> rubbish;
> while (in);
return 0;
>
Профиль
Группа: Участник
Сообщений: 19
Регистрация: 24.9.2007
Где: Киев
Репутация: нет
Всего: нет
спасибо за совет
Это сообщение отредактировал(а) Krav — 29.3.2009, 17:21
Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина
Репутация: 29
Всего: 69
Цитата(Krav @ 29.3.2009, 13:20 ) |
возникла проблема при передаче массива в процедуру |
одна тема — один вопрос.
Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия
Репутация: 85
Всего: 196
Имхо, лучше делать так:
Код |
#include #include #include |
Это сообщение отредактировал(а) bsa — 29.3.2009, 22:28
Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина
Репутация: 29
Всего: 69
Цитата(bsa @ 29.3.2009, 21:04 ) |
std::ostringstream stream(line); //затем из каждой считанной строки |
std::istringstream
Цитата(bsa @ 29.3.2009, 21:04 ) |
Имхо, лучше делать так: |
а если необходимо считать 1, 5, 8 значение. ведь всё-равно придётся переменную rubbish использовать тогда?
Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия
Репутация: 85
Всего: 196
Цитата(bsa @ 29.3.2009, 21:04 ) |
std::ostringstream stream(line); //затем из каждой считанной строки |
Цитата(bsa @ 29.3.2009, 21:04 ) |
Имхо, лучше делать так: |
Запрещается!
1. Публиковать ссылки на вскрытые компоненты
2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
- Действия модераторов можно обсудить здесь
- С просьбами о написании курсовой, реферата и т.п. обращаться сюда
- Вопросы по реализации алгоритмов рассматриваются здесь
- FAQ раздела лежит здесь!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
[ Время генерации скрипта: 0.2147 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Как перевести строку при записи в файл?
Подскажите, как переходить на новую строку при записи в файл. Я работаю на C++ через WinAPI
(функция WriteFile). Если я пишу ‘\n’, то при просмотре файла в блокноте, строка не переводиться на новую, просто палочка рисуется |
4 ответа
24 ноября 2005 года
1.9K / / 06.09.2004
Originally posted by dailys
Если я пишу ‘\n’, то при просмотре файла в блокноте, строка не переводиться на новую, просто палочка рисуется |
Угу, заметил 🙂 Я обычно с текстовыми файлами работаю через стандартные фукнции Си. Через них удобнее с текстами работать. По поводу вопроса: должно быть как-то просто, но на данный момент мне не пришло в голову ничего проще, чем подглядеть код перевода строки в hex-редакторе 🙂
И вот что получили:
int main(void)
HANDLE h_file=CreateFile(«text.txt»,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,NULL);
char new_line[]=»\x0D\x0A»;//код перевода строки и возврата каретки
char buf[]=»проверка»;
DWORD num;
WriteFile(h_file,buf,strlen(buf),&num,0);
WriteFile(h_file,new_line,strlen(new_line),&num,0);//собственно переводим строку
WriteFile(h_file,buf,strlen(buf),&num,0);
CloseHandle(h_file);
return 0;
>