Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2013, 22:45   #1
Masafi
Форумчанин
 
Регистрация: 12.03.2011
Сообщений: 113
Восклицание Fstream

Здравствуйте!
Только только учу c++ по учебнику c++ для чайников от С.Девиса.
Принцип такой: учу часть, практикуюсь.
А так, как я - слишком быстроидущая и в тоже время нифига не понимающая голова, на первых этапах решил, что хочу сохранять данные в файлы! И точка.
Ну и давай искать код, переделывать и т.д. и т.п.
И напеределывал:
Код:
#include "index.h"//Все инклюды и тд.
int main(int nNumberofArgs, char* pszArgs[])
{
	setlocale(LC_ALL,"Russian");//Русификация
	const char * name = "base.dat";//Имя файла
	FILE *filew;//Создание какой-то переменной, какой так и не понял...
	filew = fopen(name,"w");//Присваиваем значение этой переменной на открыть файл на запись
	char textw[127] = "Первая строка\nВторая\nТретья 123";//Тот текст, который идет на запись
	fprintf(filew, "%s", textw);//Записываем
	fclose(filew);//Закрываем файл
	FILE *filer;//Опять переменная, но работаем на чтение
	filer = fopen(name,"r");//Открываем файл на чтение
	char textr[127];//Переменная, в которой будут храниться извлеченный текст
	fscanf(filer, "%s", textr);//Извлекаем
	fclose(filer);//Закрываем
	cout << textr << "\n";//Выводим текст
	system("PAUSE");//Пауза для просмотра "эффекта"
	return 0;//Возвращаем безошибочный код
}
Проблема в том, что на извлечении, в переменную дается только одно слово (первое слово из файла). Причем записывается все хорошо. Я до этого сталкивался с этой проблемой (когда char var[127] не хотел записывать пробел и все что после него шло). Тогда просто перешел на string. Но сейчас при переходе, возникают ошибки, все ругается, вместо текста либо пустота, либо какая нить хрень типа %№А, и все в том же духе. Как мне извлечь все так, чтобы был и весь текст, и ничего не ругалось.
P.S. да я нубъ
P.S.S. при прочтении вроде как даже такой простой книги, я нифига не понял на этапе "указатели" (глава 4 из 31...) :с
P.S.S.S. буду рад любой помощи, в том числе и книжной и документальной. Но все же хочется чтобы просто тыкнули в ошибку (хотя она таиться где то в районе 2 переменной на вывод, а точнее типа этой переменной (char)), и исправили все за меня
Masafi вне форума Ответить с цитированием
Старый 22.07.2013, 22:58   #2
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

Читай и записуй байты. fscanf я слыхал читает до первого пробела гдето както я хз.. напиши_строки_без_пробелов_и_провер ь
do not use your brain
Кащей вне форума Ответить с цитированием
Старый 22.07.2013, 23:08   #3
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

Код:
#include "index.h"//Все инклюды и тд.
int main(int nNumberofArgs, char* pszArgs[])
{
	setlocale(LC_ALL,"Russian");//Русификация, я хз нафиг она тебе нужна.
	const char * name = "base.dat";//Имя файла
	FILE *filew;//Создание не какой-то переменной, а указателя на файловый поток, значение которого не равно NULL если открыт файл. Считай что ты кладёш сюда путь к открытому тобой  файлу. 
	filew = fopen(name,"w");//Присваиваем  по моему не значение, а адрес указателю, но я могу ошибаться.
	char textw[127] = "Первая строка\nВторая\nТретья 123";//Тот текст, который идет на запись
	fprintf(filew, "%s", textw);//Записываем --- вот тут можно через fwrite
	fclose(filew);//Закрываем файл
	FILE *filer;//Опять переменная - мог бы использовать тот же указатель что и вначале.
	filer = fopen(name,"r");//Открываем файл на чтение 
	char textr[127];//Не переменная а массив на 127 байт(или однобайтовых переменных)
	fscanf(filer, "%s", textr);//Извлекаем --- вот тут можно было бы считывать через fread
	fclose(filer);//Закрываем
	cout << textr << "\n";//Выводим текст
	system("PAUSE");//Пауза для просмотра "эффекта"
	return 0;//Возвращаем ноль, просто ноль
}
do not use your brain
Кащей вне форума Ответить с цитированием
Старый 22.07.2013, 23:51   #4
Masafi
Форумчанин
 
Регистрация: 12.03.2011
Сообщений: 113
По умолчанию

Цитата:
Сообщение от Кащей Посмотреть сообщение
Код:
#include "index.h"//Все инклюды и тд.
int main(int nNumberofArgs, char* pszArgs[])
{
	setlocale(LC_ALL,"Russian");//Русификация, я хз нафиг она тебе нужна.
	const char * name = "base.dat";//Имя файла
	FILE *filew;//Создание не какой-то переменной, а указателя на файловый поток, значение которого не равно NULL если открыт файл. Считай что ты кладёш сюда путь к открытому тобой  файлу. 
	filew = fopen(name,"w");//Присваиваем  по моему не значение, а адрес указателю, но я могу ошибаться.
	char textw[127] = "Первая строка\nВторая\nТретья 123";//Тот текст, который идет на запись
	fprintf(filew, "%s", textw);//Записываем --- вот тут можно через fwrite
	fclose(filew);//Закрываем файл
	FILE *filer;//Опять переменная - мог бы использовать тот же указатель что и вначале.
	filer = fopen(name,"r");//Открываем файл на чтение 
	char textr[127];//Не переменная а массив на 127 байт(или однобайтовых переменных)
	fscanf(filer, "%s", textr);//Извлекаем --- вот тут можно было бы считывать через fread
	fclose(filer);//Закрываем
	cout << textr << "\n";//Выводим текст
	system("PAUSE");//Пауза для просмотра "эффекта"
	return 0;//Возвращаем ноль, просто ноль
}
Понравилось только с filew и r. Остальное не робит:

Цитата:
Сообщение от Кащей Посмотреть сообщение
Читай и записуй байты. fscanf я слыхал читает до первого пробела гдето както я хз.. напиши_строки_без_пробелов_и_провер ь
Да, и до первого \n. А так не пойдет! Мне надо разбивать по строкам все: :с

Мне интересно одно: никто не сталкивался с такой ситуацией? Когда надо загружать в файл данные и выгружать из него же? Никто не делал программ с локальной базой данных? Да и простейших игр например, где нужны сейвы... Мдя, я думал мне сейчас напихают кодов или материала для изучения... Буду ждать ответов от других людей...
Masafi вне форума Ответить с цитированием
Старый 22.07.2013, 23:56   #5
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

Ну так искай функции записи и чтения байт, а остальное в твоих руках.
do not use your brain
Кащей вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
fstream lugary Общие вопросы C/C++ 9 24.05.2012 10:13
C++ >> fstream >> Мусор -_- Katus Помощь студентам 2 03.05.2012 22:50
#include <fstream> shrek1993 Общие вопросы C/C++ 3 12.04.2012 20:31
fstream pinkiller Общие вопросы C/C++ 17 10.01.2012 15:39
fstream!С++ jasul Помощь студентам 7 30.10.2011 14:06