3 / 3 / 0
Регистрация: 01.08.2008
Сообщений: 65
|
||||||
1 | ||||||
Иероглифы при чтении из файла12.08.2008, 17:13. Показов 2253. Ответов 3
Метки нет (Все метки)
Привожу код, в котором создаю, файл записываю в него данные. Затем пытаюсь их считать, выводит иероглифы... Что не так?. Спасибо.
0
|
12.08.2008, 17:13 | |
Ответы с готовыми решениями:
3
Выводятся иероглифы при чтении структуры из файла... "Нарушение прав доступа при чтении по адресу" при чтении структур из бинарного файла Иероглифы при выводе из txt файла Можно ли при чтении из файла элементов в список удалять эти элементы(без очистки файла) |
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
12.08.2008, 17:40 | 2 |
Не так то, что компилятор не человек, чтобы угадывать, что Вы пробелом собираетесь разделить переменные.
Код
txtfile<<a <<endl<<b<<endl <<d<<endl <<e<<endl;
0
|
3 / 3 / 0
Регистрация: 01.08.2008
Сообщений: 65
|
|
13.08.2008, 11:47 [ТС] | 3 |
Спасибо!
Добавлено через 17 часов 55 минут 27 секунд Кстати, достаточно ставить только 1 endl в конце, а данные разделять пробелом. Иначе данные будут в файле стоять в столбик, а последовательные данные обычно располагают по строкам ( по записям )
0
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
13.08.2008, 12:00 | 4 |
Разделять переносом строки идеологически надежней. Если уж на то пошло, то вообще без символа конца строки все можно прочитать. Вот только это не катит...
Я показал, как мне удобней. Некоторые либы (был у меня случай когда-то) по умолчанию в качестве разделителя видят перенос, а не пробельные символы. Поэтому и читалось все подряд. Да и вообще! Проблема совсем не в endl. А в том, что файл не закрыт и конца ему не видно Последовательные данные без разницы, как располагать. Главное то, как они читаться будут. Если ничего не планируется больше, то можно и в строку и вообще без endl. Код
#include <iostream> #include <fstream> #include <cstring> using namespace std; int main() { ofstream txtfile("Testfile.txt"); if (! txtfile) { cout<<"didn't create!"; exit(-1); } int a = 1; char d = 'a'; char e = 'b'; txtfile<<a<<d<<e; txtfile.flush(); FILE *file = fopen("Testfile.txt", "rb"); if (! file) { cout<<"didn't open!"; exit(-1); } __int8 f; char *n = (char*)malloc(3); fread(&f, 1, 1, file); fread(n, 1, 2, file); *(n+2) = '\0'; cout<<"data from file: \n"; cout<<"int = "<<f<<endl; cout<<"\nchars = "<<n; cin.get(); return 0; } Также можно просто закрыть стрим сохранив его в файл ( txtfile.close(); ). Конец файла добавится и тоже все будет работать. Так что кому-то "достаточно" endl, кому-то он и не нужен Способов - куча.
0
|
13.08.2008, 12:00 | |
13.08.2008, 12:00 | |
Помогаю со студенческими работами здесь
4
Ошибка при вызове метода класса, при чтении из файла При чтении текстового файла выдает иероглифы Иероглифы при открытии файла Как при чтении файла проверить достигнут ли конец файла? При компиляции файла справки получаются иероглифы fread выводит грязь при при чтении из файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |