Как перейти на следующую строку в файле c
Перейти к содержимому

Как перейти на следующую строку в файле c

  • автор:

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;
>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *