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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2010, 06:53   #1
AquaticSoul
Нубик в С++
Пользователь
 
Аватар для AquaticSoul
 
Регистрация: 15.12.2009
Сообщений: 42
По умолчанию [C++] Работа с файлом

Код:
#include <stdio.h>
#include <conio.h>

struct Automobile         
{
	char cFirma[40];
	char cModel[10];
} sfaAutomobile;
struct SparePart  
{
	char cName[40];
	char cManufacturer[40];
	char cPrice[40];
} sfaSparePart;

struct SpareForAutomobile 
{
	struct Automobile sfaAutomobile;
	struct SparePart sfaSparePart;

} sfaSpareForAutomobile;

void main ()
{
	char cAnswer;
	bool SparePart;
	
	FILE* PointerToFile = fopen( "Spare for Automobile.txt", "a+" );

	printf( "You wish to order the spare part? 1 - yes, 0 - no\n" );
	scanf( "%d", &SparePart );

	if ( SparePart == true )
		while ( SparePart == true )
		{
			printf( "Automobile\n" );
			fprintf( PointerToFile,"%s", "Automobile" );
			printf( "Firma: " );
			scanf( "%s", &sfaAutomobile.cFirma );
			fprintf( PointerToFile, "%s", "\nFirma: " );
			fprintf( PointerToFile, "%s\n", sfaAutomobile.cFirma );
			printf( "Model: " );
			scanf( "%s", &sfaAutomobile.cModel );
			fprintf( PointerToFile, "%s", "Model: " );
			fprintf( PointerToFile, "%s\n", sfaAutomobile.cModel );

			printf( "Spare Part\n" );
			fprintf( PointerToFile, "%s", "Spare Part" );
			printf( "Name: " );
			scanf( "%s", &sfaSparePart.cName );
			fprintf( PointerToFile, "%s", "\nName: " );
			fprintf( PointerToFile, "%s\n", sfaSparePart.cName );
			printf( "\Manufacturer: " );
			scanf( "%s", &sfaSparePart.cManufacturer );
			fprintf( PointerToFile, "%s", "Manufacturer: " );
			fprintf( PointerToFile, "%s\n", sfaSparePart.cManufacturer );
			printf( "Price: " );
			scanf( "%s", &sfaSparePart.cPrice );
			fprintf( PointerToFile, "%s", "Price: ");
			fprintf( PointerToFile, "%s\n", sfaSparePart.cPrice );

			printf( "You wish to order the spare part? 1 - yes, 0 - no\n" );
			scanf( "%d", &SparePart );

			if ( SparePart == false )
				break;

			fclose( PointerToFile );
		}

	_getch();
}
Вот написал код программы который должен создавать подобие таблицы


Нужно чтобы программа спрашивала будем ли мы вводить ещё данные и если да то записывать дальше в файл, но почему-то маленько некорректно работает.
Ещё нужно в конце вывести все данные из файла на экран, как это сделать?

Последний раз редактировалось AquaticSoul; 29.04.2010 в 08:03.
AquaticSoul вне форума Ответить с цитированием
Старый 29.04.2010, 08:44   #2
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Цитата:
Сообщение от AquaticSoul Посмотреть сообщение
C++
Код:
#include <stdio.h>
#include <conio.h>
Код:
void main ()
Код:
if ( SparePart == true )
while ( SparePart == true )
if ( SparePart == false )
отжигаете товарищ
Особенно хорош вот этот кусочек:
Код:
printf( "You wish to order the spare part? 1 - yes, 0 - no\n" );
scanf( "%d", &SparePart );
if ( SparePart == false )
   break;
fclose( PointerToFile );
Если вводим 0, то из цикла выходим break'ом и файл не закрывается, если же 1, то цикл продолжается, да файл закрыт. Замените на что-то типа:
Код:
printf( "You wish to order the spare part? 1 - yes, 0 - no\n" );
scanf( "%d", &SparePart );
if( SparePart ){
  fclose( PointerToFile );
  break;
}
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 29.04.2010, 08:50   #3
AquaticSoul
Нубик в С++
Пользователь
 
Аватар для AquaticSoul
 
Регистрация: 15.12.2009
Сообщений: 42
По умолчанию

Код:
#include <stdio.h>
#include <conio.h>

struct Automobile         
{
	char cFirma[40];
	char cModel[10];
} sfaAutomobile;
struct SparePart  
{
	char cName[40];
	char cManufacturer[40];
	char cPrice[40];
} sfaSparePart;

struct SpareForAutomobile 
{
	struct Automobile sfaAutomobile;
	struct SparePart sfaSparePart;

} sfaSpareForAutomobile;

void main ()
{
	char cAnswer;
	bool SparePart;
	
	FILE* PointerToFile = fopen( "Spare for Automobile.txt", "a+" );

	printf( "You wish to order the spare part? 1 - yes, 0 - no\n" );
	scanf( "%d", &SparePart );

	if ( SparePart == true )
		while ( SparePart == true )
		{
			printf( "Automobile\n" );
			fprintf( PointerToFile,"%s", "Automobile" );
			printf( "Firma: " );
			scanf( "%s", &sfaAutomobile.cFirma );
			fprintf( PointerToFile, "%s", "\nFirma: " );
			fprintf( PointerToFile, "%s\n", sfaAutomobile.cFirma );
			printf( "Model: " );
			scanf( "%s", &sfaAutomobile.cModel );
			fprintf( PointerToFile, "%s", "Model: " );
			fprintf( PointerToFile, "%s\n", sfaAutomobile.cModel );

			printf( "Spare Part\n" );
			fprintf( PointerToFile, "%s", "Spare Part" );
			printf( "Name: " );
			scanf( "%s", &sfaSparePart.cName );
			fprintf( PointerToFile, "%s", "\nName: " );
			fprintf( PointerToFile, "%s\n", sfaSparePart.cName );
			printf( "\Manufacturer: " );
			scanf( "%s", &sfaSparePart.cManufacturer );
			fprintf( PointerToFile, "%s", "Manufacturer: " );
			fprintf( PointerToFile, "%s\n", sfaSparePart.cManufacturer );
			printf( "Price: " );
			scanf( "%s", &sfaSparePart.cPrice );
			fprintf( PointerToFile, "%s", "Price: ");
			fprintf( PointerToFile, "%s\n", sfaSparePart.cPrice );

			printf( "You wish to order the spare part? 1 - yes, 0 - no\n" );
			scanf( "%d", &SparePart );

			if( SparePart == false )
			{
				fclose( PointerToFile );
				break;
			}	

			fclose( PointerToFile );
		}

	_getch();
}
заменил, но чё-то толку нет о.О
и как вывести то данные на экран?
AquaticSoul вне форума Ответить с цитированием
Старый 29.04.2010, 12:10   #4
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Цитата:
Код:
if( SparePart == false )
{
	fclose( PointerToFile );
	break;
}	
fclose( PointerToFile );
заменил, но чё-то толку нет о.О
и как вывести то данные на экран?
fclose( PointerToFile );
в конце уберите, кстати, вы в курсе, что не рекомендуется использовать some == true, да и some == false ? Погуглите почему.
Приложу один случай:
в заголовочном файле будет где-то так:
Код:
#define true 1
#define false 0
При использовании в коде:
Код:
some *ptr = new some;
//if( ptr == true ) ошибка, ибо адрес != 1;
//if( ptr != false )  ну или null, смысл такой же: лишняя запись
if( ptr ) // вполне логично читается. как и if( !SparePart )
Цитата:
и как вывести то данные на экран?
Код:
#include <iostream>
#include <fstream>
#include <string>
...
std::string tmp;
std::ifstream in("Spare for Automobile.txt");
while( std::getline( in, tmp ) )
   std::cout << tmp << '\n';
in.close();
...
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux

Последний раз редактировалось ozo; 29.04.2010 в 12:28.
ozo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлом Leoman Помощь студентам 0 02.04.2010 21:57
Работа с файлом на Си Darh Помощь студентам 2 15.12.2009 23:44
Работа с файлом SVadiks Помощь студентам 3 08.12.2009 17:46
Работа с файлом Илюха... Помощь студентам 0 06.12.2009 20:42
Работа с файлом ! PPikaso Помощь студентам 3 29.10.2009 14:21