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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2009, 19:19   #1
cr1mson
Пользователь
 
Регистрация: 13.01.2009
Сообщений: 11
По умолчанию Работа с файлами

Помогите пожалуйста добавить запись и чтение из файла для структуры.Вот код:
Код:
#include "stdafx.h"
#include <string.h>
#include <conio.h>

struct passazhir
{
	int ves;
	char familiya[100];

} ;


int main()
{ 
	int vess;
const int N=3;
passazhir pass[N];
printf("vvedite normu vesa\n");
scanf("%d",&vess);
int i;
for(i=0;i<N;i++)
{
	printf("passazhir %d\n\n",i+1);
	printf("vvedite familiu passazhira\n");
	scanf("%s",&pass[i].familiya);
	printf("vvedite ves bagazha passazhira\n");
	scanf("%d",&pass[i].ves);
}
printf("||familiya||-----||Ves||-----||boslhe normi?||\n");
for(i=0;i<N;i++)
{
	if(pass[i].ves>vess)
		printf("%s              %d              da\n",pass[i].familiya,pass[i].ves);
	else 
		printf("%s              %d              net\n",pass[i].familiya,pass[i].ves);
}
getch();
return 0;
}
а записать в файл таблицу ||familiya||-----||Ves||-----||boslhe normi?|| с циклом.Заранее спс.
cr1mson вне форума Ответить с цитированием
Старый 14.01.2009, 19:45   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Просто добавил чтение/запись в файл к вашему коду:
Код:
#include <string.h>
#include <conio.h>
#include <stdio.h>

struct passazhir
{
	int ves;
	char familiya[100];

} ;


int main()
{
FILE *f;
int vess;
const int N=3;
passazhir pass[N];
f = fopen("in.txt","r");
if(f == NULL)
  {
	printf("File not open!\n");
	return 0;
	}
printf("vvedite normu vesa\n");
scanf("%d",&vess);
int i;
for(i=0;i<N;i++)
{
	//printf("passazhir %d\n\n",i+1);
//	printf("vvedite familiu passazhira\n");
	fscanf(f,"%s",&pass[i].familiya);
	//printf("vvedite ves bagazha passazhira\n");
	fscanf(f,"%d",&pass[i].ves);
}
fclose(f);
f = fopen("out.txt","w");
fprintf(f,"||familiya||-----||Ves||-----||boslhe normi?||\n");
for(i=0;i<N;i++)
{
	if(pass[i].ves>vess)
		fprintf(f,"%s              %d              da\n",pass[i].familiya,pass[i].ves);
	else
		fprintf(f,"%s              %d              net\n",pass[i].familiya,pass[i].ves);
}
fclose(f);
getch();
return 0;
}
---------------
файл in.txt
Код:
Ivanov
79
Petrov
120
Svetov
70
----
файл out.txt после ввода нормы 80:
Код:
||familiya||-----||Ves||-----||boslhe normi?||
Ivanov              79              net
Petrov              120              da
Svetov              70              net
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 14.01.2009, 20:48   #3
cr1mson
Пользователь
 
Регистрация: 13.01.2009
Сообщений: 11
По умолчанию

Sazary,спасибо большое!только при компиляции появляется окно и сразу пропадает!без вывода чего либо на экран(

Последний раз редактировалось cr1mson; 14.01.2009 в 21:08.
cr1mson вне форума Ответить с цитированием
Старый 14.01.2009, 21:49   #4
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

В конце напишите system("PAUSE"); после getch();
MaTBeu вне форума Ответить с цитированием
Старый 14.01.2009, 21:55   #5
cr1mson
Пользователь
 
Регистрация: 13.01.2009
Сообщений: 11
По умолчанию

нет,дело не в этом,просто при компиляции создается файл Out.txt,а файл in.txt не создается.почему так?
cr1mson вне форума Ответить с цитированием
Старый 14.01.2009, 22:09   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
а файл in.txt не создается.почему так?
Файл in.txt - файл с исходными данными. Его должны создать вы.
Или вам нужно вводить данные вручную?
Вы ведь написали, что нужно добавить
Цитата:
запись и чтение
Окно сразу пропадает, потому что программа не находит файла и завершается:
Код:
if(f == NULL)
  {
	printf("File not open!\n");
	return 0;
	}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 14.01.2009, 22:18   #7
cr1mson
Пользователь
 
Регистрация: 13.01.2009
Сообщений: 11
По умолчанию

надо добавить данные вручную.Как я понял,за это отвечает fscanf?
cr1mson вне форума Ответить с цитированием
Старый 14.01.2009, 22:42   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

fscanf - форматный ввод из файла.
Если данные вводятся вручную, то файл in.txt не нужен, как и все с ним связанное.
Измененный код:
Код:
#include <string.h>
#include <conio.h>
#include <stdio.h>

struct passazhir
{
	int ves;
	char familiya[100];

} ;


int main()
{
FILE *f;
int vess;
const int N=3;
passazhir pass[N];
printf("vvedite normu vesa\n");
scanf("%d",&vess);
int i;
for(i=0;i<N;i++)
{
	printf("passazhir %d\n\n",i+1);
	printf("vvedite familiu passazhira\n");
	scanf("%s",&pass[i].familiya);
	printf("vvedite ves bagazha passazhira\n");
	scanf("%d",&pass[i].ves);
}
f = fopen("out.txt","w");
fprintf(f,"||familiya||-----||Ves||-----||boslhe normi?||\n");
for(i=0;i<N;i++)
{
	if(pass[i].ves>vess)
		fprintf(f,"%s              %d              da\n",pass[i].familiya,pass[i].ves);
	else
		fprintf(f,"%s              %d              net\n",pass[i].familiya,pass[i].ves);
}
fclose(f);
getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами snake-as Общие вопросы Delphi 1 19.10.2008 13:38
Работа с файлами Скрунж Паскаль, Turbo Pascal, PascalABC.NET 1 18.10.2008 15:19
Работа с файлами RatMir Помощь студентам 3 09.06.2008 23:05
Работа с файлами Maksi Фриланс 4 07.06.2008 11:38
Работа с файлами Smith777 Помощь студентам 4 23.02.2008 05:08