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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2011, 23:54   #1
vinternete
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 10
Вопрос три файла, найти самый заполненый [Cи]

Задача, даны три файла, вывести количество символов каждого файла.
Код:
#include <stdio.h>
#include <stdlib.h>

main()
{
	FILE * fp;
	int i,f1=0,f2=0,f3=0;
	
	if((fp=fopen("61.txt", "r"))==NULL) 
printf("Can`t open\n");
else
do
{
	f1++;
}
while(!feof(fp));
fclose(fp);
	if((fp=fopen("62.txt", "r"))==NULL) 
printf("Can`t open\n");
else
do
{
f2++;
}while(!feof(fp));
fclose(fp);
	if((fp=fopen("63.txt", "r"))==NULL) 
printf("Can`t open\n");
else
do
{
f3++;
}while(!feof(fp));
fclose(fp);

printf("- %d %d %d -",f1,f2,f3);
}
но выводит только консоль, и виснет, где ошибка?
vinternete вне форума Ответить с цитированием
Старый 09.07.2011, 01:18   #2
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

попробуй циклы for'ом сделать
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 09.07.2011, 01:30   #3
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Цитата:
Сообщение от Демик Посмотреть сообщение
попробуй циклы for'ом сделать
И ничего опять не получит путного. Тут дело не в том какую именно инструкцию цикла делать.
Тут просто нет выхода из цикла.
Происходит инкремент f1 - а как мы достигнем конца файла? Кто будет по символам скакать? Никто )))

Программа считывает и символы конца строки.
Код:
int main( void ) {
	FILE* fp;
	int i, f1 = 0, f2 = 0, f3 = 0;

	if ( ( fp = fopen( "61.txt", "r" ) ) == NULL )
		printf( "Can`t open\n" );
	else
		do {
			if ( fgetc( fp ) != EOF ) //скачем по символам
				f1++;
		} while ( !feof( fp ) );
	fclose( fp );


	printf( "- %d %d %d -", f1, f2, f3 );
	return EXIT_SUCCESS;
}
Изо всей благодати
В руках крепко сжатых
Я донесу только капли

Последний раз редактировалось Roof; 09.07.2011 в 01:36.
Roof вне форума Ответить с цитированием
Старый 09.07.2011, 01:46   #4
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Цитата:
Сообщение от Roof Посмотреть сообщение
Код:
int main( void ) {
	FILE* fp;
	int i, f1 = 0, f2 = 0, f3 = 0;

	if ( ( fp = fopen( "61.txt", "r" ) ) == NULL )
		printf( "Can`t open\n" );
	else
		do {
			if ( fgetc( fp ) != EOF ) //скачем по символам
				f1++;
		} while ( !feof( fp ) );
	fclose( fp );


	printf( "- %d %d %d -", f1, f2, f3 );
	return EXIT_SUCCESS;
}
Было бы интересно посмотреть, как бы вы эту программу написали на С++ и с использование цикла for, если вас конечно не затруднит)
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 09.07.2011, 01:50   #5
l1pton17
Пользователь
 
Аватар для l1pton17
 
Регистрация: 01.11.2010
Сообщений: 75
По умолчанию

может быть, так?
Код:
for (int i=0;!feof(fp);i++) fgetc(fp);
в i - кол-во символов
l1pton17 вне форума Ответить с цитированием
Старый 09.07.2011, 02:55   #6
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Цитата:
Сообщение от Демик Посмотреть сообщение
Было бы интересно посмотреть, как бы вы эту программу написали на С++ и с использование цикла for, если вас конечно не затруднит)
2 Демик очевидно, Вы имеете ввиду, что условие можно поставить в инструкции цикла for.
Этот намек я понял.
Писать на c++ в данной теме по си- уже флуд, я думаю
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 09.07.2011, 11:40   #7
vinternete
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 10
По умолчанию

спасибо, выручил!
vinternete вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как создать матрицу три на три в мемо (делфи) Lordigan Помощь студентам 0 15.03.2010 18:37
масивы найти 2 самый мал эл в массиве bnv Общие вопросы C/C++ 2 11.02.2009 14:24
черный ящик, на три входа и на три выхода Shanson Помощь студентам 7 30.01.2008 09:45
Три квадратных уравнения. Найти минимальное значение среди действительных корней этих уравнений. Паскаль. GE076 Помощь студентам 2 17.12.2007 20:41