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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2010, 21:34   #1
Nostalgy
 
Регистрация: 23.04.2010
Сообщений: 7
По умолчанию Вывод содержимого файла на экран!

Как тупо вывести на экран сдержимое файла??? Вот написал программу. если файл "проканал", то должен вывести его, если нет - писать ошибку. Файл лежит в папке с проектом. Запускаю, пишу имя файла, а она пишет пустую строку и все!!! Не понимаю!!
Код:
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;
int main()
{	setlocale(LC_CTYPE,"Russian");
	cout<<"input name>";
	char name[25]="";
	gets(name);
	char a;
	ifstream in;
	in.open(name, ios::binary);// открытие двоичного файла
	if(!in)
	{
		cout<<"Файл для чтения "<<name<<" не открыт"<<endl; 
		return 1;
		{
		while(!in.eof());
		in.get(a);
		}
		cout<<a;
	}
	cout<<endl;
	in.close();
	return 0;
}
Nostalgy вне форума Ответить с цитированием
Старый 30.04.2010, 21:51   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
	if(!in)
	{
		cout<<"Файл для чтения "<<name<<" не открыт"<<endl; 
		return 1;
		{
		while(!in.eof());
		in.get(a);
		}
		cout<<a;
	}
Компилятор на unreachable code не ругается? Должен вообще-то. Что же там будет после return 1;?
Код:
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;
int main()
{	setlocale(LC_CTYPE,"Russian");
	cout<<"input name>";
	char name[25]="";
	gets(name);
	char a;
	ifstream in;
	in.open(name, ios::binary);// открытие двоичного файла
	if(!in)
	{
		cout<<"Файл для чтения "<<name<<" не открыт"<<endl; 
		return 1;
	}
	while(!in.eof())
	{
		in.get(a);
		cout<<a;
	}
	cout<<endl;
	in.close();
	return 0;
}
; после while, и не менее однократное выполнение cout << a;
Внимательнее смотрите, как вы группируете инструкции!
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 30.04.2010, 23:45   #3
Nostalgy
 
Регистрация: 23.04.2010
Сообщений: 7
По умолчанию

Огромнейшее спасибо. Другая проблема все с тем же выводом ну и вводом данных в \ из файла:

В первой части программы запишем в файл данные, соответствующие данной структуре, а во второй части программы считаем данные из файла и выведем их на экран. Должно быть так, но снова что-то не нравится...


Код:
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;
struct Tutors
{
	char name[25];
	int years;
	char step[10];
	int stag;
};
Tutors t[10]={
		"Ivanov",25,"ktn",3,
		"Petrov",45,"no",20,
		"Sidorov",35,"ktn",6,
		"Kulikov",58,"dtn",30,
		"Sokolova",45,"ktn",22,
		"Drobysheva",43,"no",10,
		"Golova",50,"ktn",28,
		"Balabanov",60,"ktn",35,
		"Ezdakov",39,"no",17,
		"Asharina",45,"ktn",18
		};
int main()
{
	setlocale(LC_CTYPE,"Russian"); 	
	cout<<"input name>";
	char name[25]="";
	gets(name);
	ofstream out;
	out.open(name, ios::binary);
	if(!out){cout<<"файл для записи "<<name<<" не открыт"<<endl; return 1;}
   	 out.write((char* ) &t, sizeof t);
    	out.close();
	ifstream in;
	in.open(name, ios::binary);
	if(!in){cout<<"файл для чтения "<<name<<" не открыт"<<endl; return 1;}
 in.read((char* ) &t,sizeof t);
	cout<<setw(26)<<"Name|"<<setw(9)<<"Vozrast|"<<setw(9)<<"Stepen|"<<setw(7) <<"Stag|"<<endl;
    for(int i=0;i<10;i++)
	{
cout<<setw(51)<<"___________________________"<<endl;
          cout<<setw(25)<<t[i].name<<"|"<<setw(8)<<t[i].years<<"|"<<setw(8)<< t[i].step<<"|"<<setw(6)<<t[i].stag<<"|";
          cout<<endl;
        }
	in.close();
	return 0;
}
Nostalgy вне форума Ответить с цитированием
Старый 16.01.2011, 19:21   #4
mojohead
Пользователь
 
Регистрация: 10.01.2011
Сообщений: 79
По умолчанию

Код:
setlocale(LC_CTYPE,"Russian");
что значит эта строка
mojohead вне форума Ответить с цитированием
Старый 16.01.2011, 19:28   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Значит что Сишный модуль для вывода в консоль будет сконфигурирован на вывод в русской раскладке.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.01.2011, 19:33   #6
mojohead
Пользователь
 
Регистрация: 10.01.2011
Сообщений: 79
По умолчанию

понял...спасибо
mojohead вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод содержимого street-walker Помощь студентам 1 04.03.2010 21:03
Вывод содержимого вектора на экран lelik759 Помощь студентам 1 05.11.2009 00:07
Проблема с чтением и выводом содержимого текстового файла на экран -=PascaL=- Помощь студентам 16 08.08.2009 07:13
поиск по наванию файла и вывод на экран Karinka Общие вопросы Delphi 12 16.03.2009 11:52
вывод файла на экран! Шушелла Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 29.10.2007 09:34