|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.11.2011, 15:56 | #1 |
Пользователь
Регистрация: 17.01.2010
Сообщений: 45
|
Работа с файлами
Делаю программу в Visual Studio 6 (MFC), которая будет работать с текстовыми файлами..... программа дожна будет считывать данные с файла (цифры) построчно.... как определить в программе что при чтении файла каретка дошла до конца строки, если размер строки не известен??... понятно что при записи данных в файл программа записывает в каждой строке \n\r ... делаю такой цикл:
Код:
цикл считывает каждый символ из файла ( в созданном файле 3 строки по 2 числа), и посути при обноружении символа переноса на новую строку, должен вывести сообшение в эдит о конце строки, пробовал всё делать и без цикла, задавал положение каретки в место где дожен быть знак переноса на новую строку, ничего не происходит... пытался и вместо "f (m_Z == "\n" )" написать так "f (m_Z == "0x0A" )" разницы никакой...... так как же определить что в файле стоит знак переноса на новую строку или хотя бы как определить что началась новая строка?? файл открыт через CStdioFile в режиме "CFile::typeText" если открыть файл в бинарном режиме "CFile::typeBinary" то можно отследить перенос каретки на начало строки "\r" но при выводе чисел из текстового файла он выводится вместе с числами, точнее не он а какой то значёк, тоесть вместо обычного числа я получаю "7|" Последний раз редактировалось ashtone9130; 24.11.2011 в 16:20. |
03.04.2012, 21:44 | #2 |
Пользователь
Регистрация: 05.03.2012
Сообщений: 29
|
По-моему, Вы считываете строку. А потом пытаетесь сравнить всю считанную строку со строкой "\n".
Двойными кавычками задаются строки, одинарными- символ. \n- это СИМВОЛ. т.е. надо так '\n'. И проверку производить надо в цикле по элементам строки m_Z. Может так будет правильней: Код:
|
04.04.2012, 03:53 | #3 |
Форумчанин
Регистрация: 26.09.2011
Сообщений: 176
|
по моему очевидно, что метод ReadString читает строки.
|
04.04.2012, 10:17 | #4 |
Пользователь
Регистрация: 05.03.2012
Сообщений: 29
|
не факт
Кстати совсем не факт, что программа пишет строки. Если писать через CStdioFile.WriteString() то надо обязательно в конец строки добавлять \n вручную. Поэтому может быть что символов конца строки просто нет. Хотя, кажется "очевидно, что пишет строку".
|
04.04.2012, 12:34 | #5 |
Пользователь
Регистрация: 17.01.2010
Сообщений: 45
|
вообщем то с этим вопросом я давно разобрадся, но всёравно спасибо за ответы, может поэксперементирую ещё)).. в конце каждой строки действительно стоит \r\n, это пределяется легко, считывая строку с конца, и постепернно передвигая указатель, моно заметить что по окончанию строки, есть ещё 2 позиции, которые не видно ( понятно что это \r\n), а вот потом указатель переходит на новую строку..
решение получилось вот такое (правда не обошлось без помощи на других форумах): Код:
|
04.04.2012, 12:46 | #6 |
Пользователь
Регистрация: 05.03.2012
Сообщений: 29
|
я натолкнулся на эту тему случайно )
А ну правильно, Вы решили вообще не искать символ конца строки и сразу обрабатывать данный. Последний раз редактировалось mr_cipher; 04.04.2012 в 12:48. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с файлами | nikcpp | Общие вопросы Delphi | 2 | 11.05.2011 15:04 |
Работа с файлами | Natysya | Общие вопросы C/C++ | 10 | 24.11.2010 16:39 |
C работа с файлами | svetikpgaek | Помощь студентам | 0 | 26.12.2009 22:13 |