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му столбцу.
Переход на новую строчку в файле (СИ)
Мне надо записывать в конец каждой строки файла символ. Так вот, как после записи переходить на следующую строчку файла?
Отслеживать
219k 15 15 золотых знаков 119 119 серебряных знаков 230 230 бронзовых знаков
задан 22 апр 2017 в 14:26
133 1 1 золотой знак 1 1 серебряный знак 7 7 бронзовых знаков
Добавлять еще один символ к строке или заменять последний? Если заменять, то ничего делать не надо. После перезаписи строки просто читаете следующую. Если добавлять, то пишите все в новый файл, а потом переименуйте его в старый.
22 апр 2017 в 15:08
Нужно именно добавлять символ в конец строки. А без создания нового файла никак нельзя?
22 апр 2017 в 15:13
В принципе можно, но очень неудобно и нерационально.
22 апр 2017 в 16:34
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Вобщем, примерно так проще всего:
#include #include int main() < FILE * in = fopen("data","r"); FILE * out = fopen("data~","w"); if (in == NULL || out == NULL) < fprintf(stderr,"Error open file\n"); return 1; >char addSym = '$'; int c; while((c = fgetc(in)) != EOF) < if (c == '\n') fputc(addSym,out); fputc(c,out); >fclose(in); fclose(out); unlink("data"); rename("data~","data"); >
Отслеживать
ответ дан 22 апр 2017 в 16:56
219k 15 15 золотых знаков 119 119 серебряных знаков 230 230 бронзовых знаков
Если текстовый файл уже существует, то читаешь построчно делая риплейс «\r\n» на «\r\n» и потом сохраняешь текст.
Отслеживать
ответ дан 22 апр 2017 в 17:00
Andrew Stop_RU_war_in_UA Andrew Stop_RU_war_in_UA
19k 6 6 золотых знаков 36 36 серебряных знаков 98 98 бронзовых знаков
- c
- файлы
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как перейти на следующую строку в c
Регистрация: 15.08.2008
Сообщений: 2,502
собственно есть функции для установки курсора (ну или позиции) в файле это допустим 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 |
newline
c = newline создает символ новой строки. newline эквивалентно char(10) или sprintf(‘\n’) Использование newline конкатенировать символ новой строки на вектор символов или строку, или разделять текст на символах новой строки.
Примеры
Добавление новой строки к вектору символа и строке
Создайте символ новой строки с newline и конкатенируйте его на вектор символов.
chr = 'Whose woods these are I think I know.'; chr = [chr newline 'His house is in the village though']
chr = 'Whose woods these are I think I know. His house is in the village though'
Несмотря на то, что chr отображения на двух линиях, chr 1 73 вектор символов, который содержит эти два предложения, разделенные новой строкой.
Начиная в R2017a, можно создать строки с помощью двойных кавычек. Создайте символ новой строки. Затем используйте + конкатенировать символ новой строки и больше текста на конец строки.
str = "In Xanadu did Kubla Khan"; str = str + newline + "A stately pleasure-dome decree"
str = "In Xanadu did Kubla Khan A stately pleasure-dome decree"
Несмотря на то, что str отображения на двух линиях, str строка 1 на 1.
Советы
- newline функция не возвращает символ возврата каретки. Возврат каретки эквивалентен char(13) или sprintf(‘\r’) .
Расширенные возможности
Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.
Смотрите также
Введенный в R2017b
Открытый пример
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Документация MATLAB
Поддержка
- MATLAB Answers
- Помощь в установке
- Отчеты об ошибках
- Требования к продукту
- Загрузка программного обеспечения
© 1994-2021 The MathWorks, Inc.
- Условия использования
- Патенты
- Торговые марки
- Список благодарностей
Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.