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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2014, 14:46   #1
Uefa
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 59
По умолчанию (c++) fgets

Здравствуйте! Нужно считать 10 строк из одного файла и записать из них только четные в другой файл. Считывает нормально, а файл, в который записываю, остается пустой...
Код:
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
using namespace std;

void main ()
{
	setlocale (0, "");   
	
	const int MAXLINE=10; //максимальная длина строки
	char buf[10][MAXLINE]; //строка, с помощью которой выполняется копирование
	FILE *in =  fopen("f1.ini", "r"), //исходный файл
		*out =  fopen("f2.ini", "w"); //принимающий файл

	for (int i=0; i<10; i++)
	{
		fgets (buf[i], MAXLINE, in);
		if ((i+1)%2 == 0)
			fputs(buf[i],out);
	}


	system ("pause");
}

Последний раз редактировалось Stilet; 23.05.2014 в 16:10.
Uefa вне форума Ответить с цитированием
Старый 23.05.2014, 15:19   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, для начала попробуйте в конце программы корректно закрыть открытые файлы:
Код:
fclose(out);
fclose(in);
и цикл чтения от 0 д 10 не очень надежен - если в файле меньше 10 строк, то будут проблемы.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.05.2014, 15:46   #3
Uefa
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 59
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну, для начала попробуйте в конце программы корректно закрыть открытые файлы:
Код:
fclose(out);
fclose(in);
и цикл чтения от 0 д 10 не очень надежен - если в файле меньше 10 строк, то будут проблемы.
как лучше сделать?
Uefa вне форума Ответить с цитированием
Старый 23.05.2014, 15:51   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

лучше читать файл, пока он не пуст (это что-то вроде while !eof(in) {....} )
а переменную i (номер строки) обнулите перед циклом, а внутри цикла наращивайте на единицу.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.05.2014, 15:52   #5
Uefa
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 59
По умолчанию

Код:
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
using namespace std;

void main ()
{
	setlocale (0, "");   
	
	const int MAXLINE=11; //максимальная длина строки
	char buf[11][MAXLINE]; //строка, с помощью которой выполняется копирование
	FILE *in =  fopen("f1.ini", "r"), //исходный файл
		*out =  fopen("f2.ini", "w"); //принимающий файл

	int i=0;
	while (!feof(in))
	{
		fgets (buf[i], MAXLINE, in);
		if ((i+1)%2 == 0)
			fputs(buf[i],out);
		i++;
	}
	fclose(out);
	fclose(in);

	system ("pause");
}
Какие-нибудь системные ошибки есть в коде? Подскажите еще как теперь подсчитать размер обоих файлов в байтах.
Uefa вне форума Ответить с цитированием
Старый 23.05.2014, 15:56   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

файл то выходной нормальный, не пустой?!



p.s. насчёт системных ошибок - это не ко мне, я C++ вообще не знаю!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.05.2014, 16:00   #7
Uefa
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 59
По умолчанию

Выходной файл вроде бы что-то выводит и даже, кажется, выводит то, что нужно. А как подсчитать размер файлов в байтах?
Uefa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
fgets guroDragon Помощь студентам 1 02.04.2014 18:13
Аргумент fgets fenris Общие вопросы C/C++ 1 22.12.2012 19:41
Считывание из файла. Функция fgets AmAmAm Помощь студентам 1 11.12.2010 02:32
fgets в цикле работает некорректно maryan.vetrov Общие вопросы C/C++ 7 30.09.2010 01:43
C++ fgets mertl Помощь студентам 12 09.09.2009 15:10