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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2010, 10:38   #1
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
Восклицание Работа с файлами в С

Никак не получается вывести содержимое файла на экран скорее всего я что то напутал с чтением в буфер и вывода из него на экран компилятор выдает что ошибки в скобках вида ")" в самой последней функции все остальное вроде работает помогите исправить ошибку
Код:
#include <stdio.h>                 
#include <conio.h>                      
#include <stdlib.h>
#include <time.h>

int read_m(int*MAS, int p);
int raschet_chetnie(int*MAS, int p);
int raschet_nechetnie(int*MAS, int p);
int write_s(int a,int b);

char main()
{ 
	int const p=19;
	int mas[p];
	int ch,n;
	read_m (mas,p);
	ch=raschet_chetnie(mas,p);
	n=raschet_nechetnie(mas,p);
	write_s(ch,n);
	getch();
	return 0;
}

int read_m (int*MAS, int p)
{
	int i;
	FILE *file;
	srand ( (unsigned)time(NULL) );
	if ((file = fopen("D:\\1.txt","w+t")) == NULL)
		printf("Файл невозможно открыть или создать\n");
	else
	{
    	for (i=0;i<p;i++)
		{
  			*(MAS+i)=rand()%100;
			fprintf(file,"%d ",*(MAS+i));
		}
	 	fclose(file);
	}
    return (*(MAS+i));
}

int raschet_chetnie(int*MAS, int p)
{
	int i;
	int ch=0;
	FILE *file;
	if ((file = fopen("D:\\1.txt","at")) == NULL)
		printf("Файл невозможно открыть или создать\n");
	else
	{
		for (i=0;i<p;i++)
		{
			if (*(MAS+i)%2==0)
			{
  				ch++;
				fprintf(file,"%d",&ch);
			}
		}
  		fclose(file);
	}
	return (ch);
}

int raschet_nechetnie(int*MAS, int p)
{
	int i;
	int n=0;
	FILE *file;
	if ((file = fopen("D:\\1.txt","at")) == NULL)
		printf("Файл невозможно открыть или создать\n");
	else
	{
		for (i=0;i<p;i++)
		{
			if (*(MAS+i)%2!=0)
			{
  				n++;
				fprintf(file,"%d",&n);
			}
		}
  		fclose(file);
	}
	return (n);
}

int write_s (int ch,int n)
{ 
	FILE *file;
	if ((file = fopen("D:\\1.txt","rt")) == NULL)
		printf("Файл невозможно открыть или создать\n");
	else
	{
		fread(char*file,size_t 20,size_t 1,buf);
		snprintf(char*buf,size_t 20,size_t 1,NULL);
		fclose(file);
	}
	return 0;
}
серг вне форума Ответить с цитированием
Старый 18.02.2010, 11:07   #2
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

Ошибка в функциях fread и snprintf
Код:
int write_s (int ch,int n)
{ 
	FILE *file;
	if ((file = fopen("D:\\1.txt","rt")) == NULL)
		printf("Файл невозможно открыть или создать\n");
	else
	{
		fread(char*file,size_t 20,size_t 1,buf);
		snprintf(char*buf,size_t 20,size_t 1,NULL);
		fclose(file);
	}
	return 0;
}
понял что fread записывается
Код:
size_t fread(void *DstBuf,size_t 20,size_t 1,file);
но все равно остаются ошибки компилятор выдает ошибки в скобках ")" якобы они пропущены или их недостает никак не пойму в чем проблема

Код:
int write_s (int ch,int n)
{ 
	FILE *file;
	if ((file = fopen("D:\\1.txt","rt")) == NULL)
		printf("Файл невозможно открыть или создать\n");
	else
	{
		size_t fread(void *DstBuf,size_t 20,size_t 1,file);
		int snprintf (char *DstBuf,size_t 20;const char*frm;NULL);
		fclose(file);
	}
	return 0;
}
исправленный код ошибки опять в fread и snprintf вот что пишет компилятор :
error C2143: syntax error : missing ')' before 'constant'
error C2143: syntax error : missing ';' before 'constant
error C2275: 'size_t' : illegal use of this type as an expression
error C2143: syntax error : missing ';' before 'constant'
error C2059: syntax error : ')'
error C2143: syntax error : missing ';' before 'constant'
error C2059: syntax error : ')'
никак не получается исправить (((

Код:
int write_s (int ch,int n)
{ 
	FILE *file;
	if ((file = fopen("D:\\1.txt","rt")) == NULL)
		printf("Файл невозможно открыть или создать\n");
	else
	{
		size_t fread(void *_Buf,size_t_1,size_t_25,FILE* _file);
		int snprintf (void *Buf,size_t 25;const char*frm;NULL);
		fclose(file);
	}
	return 0;
}
теперь 4 ошибки :
error C2061: syntax error : identifier 'size_t_1'
error C2143: syntax error : missing ')' before 'constant'
error C2143: syntax error : missing ';' before 'constant
error C2059: syntax error : ')'

Последний раз редактировалось Stilet; 18.02.2010 в 17:00.
серг вне форума Ответить с цитированием
Старый 18.02.2010, 15:15   #3
FranZuZ
 
Регистрация: 20.12.2009
Сообщений: 6
По умолчанию

int _tmain(int argc, _TCHAR* argv[])
{
FILE *fp=NULL;
char s[50]="";
char a[500]="";
printf ("Vvedite imya fayla: ");
scanf ("%s",s);
if (fopen (s,"rt")==NULL)
{ printf ("Error %d\n",ferror (fp));
return 1;
}
fp=fopen (s,"rt");
fread(a,1000,1,fp);
printf ("%s\n",a);
system("PAUSE");
return 0;
}


вот такую прогу я писал, более простая
FranZuZ вне форума Ответить с цитированием
Старый 18.02.2010, 16:53   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

"size_t fread", "int snprintf" - зачемм объвлять в ВЫЗОВЕ тип возвращаемого значения?

"int snprintf (void *Buf,size_t 25;const char*frm;NULL);" - зачем в ВЫЗОВЕ указывать тип параметров?
p51x вне форума Ответить с цитированием
Старый 18.02.2010, 16:58   #5
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

вы используете ф-ии а не пишете их прототипы, не нужно писать типы переменных

Код:
не правильно
size_t fread(void *_Buf,size_t_1,size_t_25,FILE* _file);

правильно
fread(_Buf,1,25, _file);
дальше разберетесь?
NiCola999 вне форума Ответить с цитированием
Старый 18.02.2010, 16:58   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

и параметры перечисляются через запятую, а не точку с запятой
p51x вне форума Ответить с цитированием
Старый 18.02.2010, 18:23   #7
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

вроде все исправил напомните пожалуйста как сделать чтобы buf буфер был обявлен
серг вне форума Ответить с цитированием
Старый 18.02.2010, 18:26   #8
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

какой тип должен у него быть void ???
серг вне форума Ответить с цитированием
Старый 18.02.2010, 18:43   #9
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

как правильно идентифицировать буфер???
серг вне форума Ответить с цитированием
Старый 18.02.2010, 19:21   #10
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Код:
char buf[25];
NiCola999 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с файлами на C# Dimarik C# (си шарп) 7 30.11.2010 22:25
Работа с файлами NightFire Паскаль, Turbo Pascal, PascalABC.NET 5 17.05.2009 21:47
Работа с файлами snake-as Общие вопросы Delphi 1 19.10.2008 13:38
Работа с файлами Stiker Общие вопросы C/C++ 1 10.04.2008 22:47
Работа с файлами Zenit10 Помощь студентам 2 19.01.2008 09:59