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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2009, 20:31   #1
Matr1x
Студент
Пользователь
 
Аватар для Matr1x
 
Регистрация: 10.11.2009
Сообщений: 49
По умолчанию Считывание и запись в фаил

Привет всем, помогите разобраться с функцией. Вот задание :
нужно забить структуру в текстовый фаил :
Структура "Спортивная команда":
название;
город;
количество игроков;
количество набранных очков.
и удалить все элементы с количеством очков меньше заданно-го из этого файла.

Вроде все прописал.. программа зависает на выполнении функции o4ki, на fscanf-е.

Код:
#include "stdafx.h"
#include <math.h>
#include <iostream>
#include <string.h>
using namespace std;
#define max_razmer 255
#define max_razmer2 20
int o4ki(int min);
void sodershimoe_faila(int n);
struct sport_team
{
	char name_team[max_razmer2];
	char city_team[max_razmer2];
	int kolvo_igrokov;
	int kolvo_o4kov;
};
sport_team mas[max_razmer];

int main()
{
	FILE *out;
	if((out=fopen("1.txt","w"))==NULL)
	{
		cout<<"\nOshibka pri otkritii faila";
	}
	int n,i,min,kon;
	cout<<"\nVvedite koli4estvo komand --> ";
	cin>>n;
	for(i=0;i<=n-1;i++)
	{
		//-------------------------------------------------------
		cout<<"\nVvedite nazvanie komandi --> ";
		cin>>mas[i].name_team;
		cout<<"\nVvedite gorod komandi --> ";
		cin>>mas[i].city_team;
		cout<<"\nVvedite koli4estvo igrokov v komande --> ";
		cin>>mas[i].kolvo_igrokov;
		cout<<"\nVvedite koli4estvo o4kov komandi --> ";
		cin>>mas[i].kolvo_o4kov;
		cout<<"\n------------------------------------------------";
		//-------------------------------------------------------		
		fprintf(out,"%s\n",mas[i].name_team);
		fprintf(out,"%s\n",mas[i].city_team);
		fprintf(out,"%i\n",mas[i].kolvo_igrokov);
		fprintf(out,"%i\n",mas[i].kolvo_o4kov);
		fprintf(out,"%s\n","------------------------------------------");
	}
	sodershimoe_faila(n);	
	cout<<"\nVvedite minimalbnoe koli4estvo o4kov dl9 proxoda v final --> ";
	cin>>min;
	fclose(out);
	kon=o4ki(min);	
	return 0;
}

int o4ki(int min)
{
	FILE *input;
	char nazv[max_razmer2],gorod[max_razmer2],otdelenie[max_razmer2];
	int koli4estvo,o4ki;
	if((input=fopen("1.txt","a"))==NULL)
	{
		cout<<"\nOshibka pri otkritii faila";
	}	
	do
	{
		fscanf(input,"%s\n%s\n%i\n%i\n%s\n",&nazv,&gorod,&koli4estvo,&o4ki,&otdelenie); //вот тут не считывает
		if(min<o4ki)
		{
			fprintf(input,"%s\n%s\n%i\n%i\n%s\n",nazv,gorod,koli4estvo,o4ki,otdelenie);
		}		
	}
	while(!feof(input));
	fclose(input);
	return 0;
}
void sodershimoe_faila(int n)
{
	for(int i=0;i<=n-1;i++)
	{
		cout<<endl;
		cout<<mas[i].name_team<<endl;
		cout<<mas[i].city_team<<endl;
		cout<<mas[i].kolvo_igrokov<<endl;
		cout<<mas[i].kolvo_o4kov<<endl;
	}
}

Последний раз редактировалось Matr1x; 30.11.2009 в 20:33.
Matr1x вне форума Ответить с цитированием
Старый 30.11.2009, 21:16   #2
Kravnos
 
Аватар для Kravnos
 
Регистрация: 29.11.2009
Сообщений: 7
По умолчанию

Mode Meaning
“r” Open a file for reading //чтение
“w” Create a file for writing //запись
“a” Append to a file //добавление
“r+“ Open a file for read/write //открыть для чтения/записи
“w+“ Create a file for read/write //создать для чтения/записи
“a+“ Open a file for read/write //открыть для чтения/записи
Сорс
В коде просто открытие для добавления,
об открытии файла с возможностью чтения ничего не указано.
Код:
...
if((input=fopen("1.txt","a"))==NULL)
...
Вероятно причина в этом.
Адекватность. Как всегда в меньшинстве.

Последний раз редактировалось Kravnos; 30.11.2009 в 21:21. Причина: Дополнил...
Kravnos вне форума Ответить с цитированием
Старый 01.12.2009, 05:50   #3
Matr1x
Студент
Пользователь
 
Аватар для Matr1x
 
Регистрация: 10.11.2009
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Kravnos Посмотреть сообщение
Mode Meaning
“r” Open a file for reading //чтение
“w” Create a file for writing //запись
“a” Append to a file //добавление
“r+“ Open a file for read/write //открыть для чтения/записи
“w+“ Create a file for read/write //создать для чтения/записи
“a+“ Open a file for read/write //открыть для чтения/записи
Сорс
В коде просто открытие для добавления,
об открытии файла с возможностью чтения ничего не указано.
Код:
...
if((input=fopen("1.txt","a"))==NULL)
...
Вероятно причина в этом.
спасибо большое) сменил на r+ , но программа также виснет(
Matr1x вне форума Ответить с цитированием
Старый 01.12.2009, 08:11   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
fscanf(input,"%s\n%s\n%i\n%i\n%s\n",&nazv,&goro d,&koli4estvo,&o4ki,&otdelenie); //вот тут не считывает
if(min<o4ki)
{
fprintf(input,"%s\n%s\n%i\n%i\n%s\n",nazv,gorod, koli4estvo,o4ki,otdelenie);
}
Это что за дурость?
Ты считал из файла и сразу в него же дописал, естесственно он зациклится.
Поставь там обычный printf
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2009, 17:03   #5
Matr1x
Студент
Пользователь
 
Аватар для Matr1x
 
Регистрация: 10.11.2009
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это что за дурость?
Ты считал из файла и сразу в него же дописал, естесственно он зациклится.
Поставь там обычный printf
ага, понял ошибку..,спасибо) сейчас вот застопарился.. куда тогда запихать считанные данные из файла? с массивами думаю не получится.

Последний раз редактировалось Matr1x; 01.12.2009 в 17:10.
Matr1x вне форума Ответить с цитированием
Старый 01.12.2009, 17:13   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Та а чего подробнее?
Ты считал из файла, а потом сразу писать пытаешься.
Сделай то что я тебе сказал, и получишь вывод на экран как и, видимо, полагается.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2009, 17:20   #7
Matr1x
Студент
Пользователь
 
Аватар для Matr1x
 
Регистрация: 10.11.2009
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Та а чего подробнее?
Ты считал из файла, а потом сразу писать пытаешься.
Сделай то что я тебе сказал, и получишь вывод на экран как и, видимо, полагается.
На экран то без проблем, но мне надо потом осуществить запись в фаил при таком условии - if(min<o4ki) (.. вот там мысли и кончаются), может вначале после каждого scanf-а записывать их в структуру? а потом из структуры считывать и работать с условием.
Matr1x вне форума Ответить с цитированием
Старый 01.12.2009, 17:21   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
осуществить запись в фаил
Так ты в другой файл записывай, а не в тот который считываешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2009, 17:35   #9
Matr1x
Студент
Пользователь
 
Аватар для Matr1x
 
Регистрация: 10.11.2009
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Так ты в другой файл записывай, а не в тот который считываешь.
осуществил.. на fscanf ругается, вот тут
Код:
fscanf(input,"%s\n%s\n%i\n%i\n%s\n",&nazv,&gorod,&koli4estvo,&o4ki,&otdelenie);
мне вот самому эта строчка не нравится..%s\n%s\n%i\n%i\n%s\n правильно ли я осуществляю то что хочу? например надо считать из файла:
Веселыеребята
Тюмень
5
100
--------------------

Последний раз редактировалось Matr1x; 01.12.2009 в 17:47.
Matr1x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Считывание и запись структур в бинарный файл TheKnyazz Общие вопросы C/C++ 7 10.11.2009 13:47
Запись данных в фаил из web формы Черничный PHP 3 23.08.2008 23:08
Запись и считывание jpg из mdb motorov Общие вопросы Delphi 1 28.07.2008 10:10
Ещё запись в файл + считывание s-t-r-i-k-e-r Помощь студентам 3 03.06.2008 20:57