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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2018, 13:28   #1
Vzlom
Форумчанин
 
Регистрация: 11.02.2013
Сообщений: 155
По умолчанию Ошибки

Код:
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
const int n=13;
struct table //Объявили новую структуру table, создание структуры запроса. 
{
	char name[10];//Первый параметр
	int adress;//Второй параметр};
void main()
{
	setlocale(LC_ALL, "Russian"); // подключение русского языка
	struct table tbl[n]; // Объявили массив переменных  типа table
	FILE *fin,*fout; //создаем указатели на переменную типа FILE
	char e[]="exit"; // создаем строку содержащую слово "exit"
	int i,j; //создаем 2 переменные типа int, для перебора
	bool found; //создаем переменную типа bool, флаг
	char buf[10]; //создание буфера
	e[5]=0;
	fopen_s(&fin,"input.txt","r"); //Открытие файла 
	fopen_s (&fout,"output.txt","w"); //Открытие файла 
	for(i=0;i<n;i++)  //создание таблицы команд  ШАГ1
	{	fgets(tbl[i].name,10,fin); //считывание команды из файла
		j=0;
		while(tbl[i].name[j]!=10) // задание названия команды
			j++;
		tbl[i].name[j]=0;
		tbl[i].adress=rand();// задание адреса команды ШАГ2
	}
	printf("Список команд\n");
	fprintf(fout,"Список команд\n");
	for(i=0;i<n;i++)// вывод таблицы на экран
	{	printf("%s\n",tbl[i].name);
		fprintf(fout,"%s\n",tbl[i].name);
	}
do   ;// ШАГ3
{	
found=false;//флаг выключен ШАГ4
		printf(">");
		fprintf(fout,">");
		gets_s(buf);// считывание с экрана 
		fprintf(fout,"%s\n",buf);//запись в файл
		for(i=0;i<n;i++)//поиск команды по таблице ШАГ5
		{if(!strcmp(buf,tbl[i].name))
			{
				printf("Адрес этой подпрограммы для данной команды %d\n",tbl[i].adress);//вывод на экран полученного результата
				fprintf(fout,"Адрес этой подпрограммы для данной команды %d\n",tbl[i].adress);// запись в файл полученного результата
				found=true;// флаг включен
				break;
			}
}
		if((!found)&&(strcmp(e,buf)))// ШАГ6
	{
			printf("Такой каманды нет.\n");//вывод на экран полученного результата ШАГ7
			fprintf(fout,"Такой каманды нет.\n");// запись в файл полученного результата ШАГ8
		}
}
	while(strcmp(e,buf));//выход из программы
	fclose(fin);//закрытие файла. Шаг 9
	fclose(fout);//закрытие файла
}
Ошибки:
[C++ Error] File1.cpp(1): E2209 Unable to open include file 'stdafx.h'
[C++ Error] File1.cpp(20): E2268 Call to undefined function 'fopen_s'
[C++ Error] File1.cpp(37): E2308 do statement must have while
[C++ Error] File1.cpp(63): E2040 Declaration terminated incorrectly

До сих пор не в курсе как код оформлять?
Модератор

Последний раз редактировалось Аватар; 21.09.2018 в 13:31.
Vzlom вне форума Ответить с цитированием
Старый 21.09.2018, 14:06   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
#include "stdafx.h"
Уберите, вам в этом коде это не надо.

Цитата:
Сообщение от Vzlom Посмотреть сообщение
[C++ Error] File1.cpp(20): E2268 Call to undefined function 'fopen_s'
Либо обновите билдер (включите новый стандарт), либо перепишите на fopen

Цитата:
Сообщение от Vzlom Посмотреть сообщение
[C++ Error] File1.cpp(37): E2308 do statement must have while
Код:
do   ;// ШАГ3
Точка с запятой зачем?

Цитата:
Сообщение от Vzlom Посмотреть сообщение
[C++ Error] File1.cpp(63): E2040 Declaration terminated incorrectly
63я это какая строка?
p51x на форуме Ответить с цитированием
Старый 21.09.2018, 15:16   #3
Vzlom
Форумчанин
 
Регистрация: 11.02.2013
Сообщений: 155
По умолчанию

Спасибо, с этим разобрался.
Код:
#include <iostream>
#include <fstream>
using namespace std;
const int n=13;
struct table //Îáúÿâèëè íîâóþ ñòðóêòóðó table, ñîçäàíèå ñòðóêòóðû çàïðîñà. 
{
	char name[10];//Ïåðâûé ïàðàìåòð
	int adress;//Âòîðîé ïàðàìåòð};
int main(void)
{
	setlocale(LC_ALL, "Russian"); // ïîäêëþ÷åíèå ðóññêîãî ÿçûêà
	struct table tbl[n]; // Îáúÿâèëè ìàññèâ ïåðåìåííûõ  òèïà table
	FILE *fin,*fout; //ñîçäàåì óêàçàòåëè íà ïåðåìåííóþ òèïà FILE
	char e[]="exit"; // ñîçäàåì ñòðîêó ñîäåðæàùóþ ñëîâî "exit"
	int i,j; //ñîçäàåì 2 ïåðåìåííûå òèïà int, äëÿ ïåðåáîðà
	bool found; //ñîçäàåì ïåðåìåííóþ òèïà bool, ôëàã
	char buf[10]; //ñîçäàíèå áóôåðà
	e[5]=0;



    FILE* fp = fopen("input.txt", "r");
    if(!fp) {
        perror("File opening failed");
        return EXIT_FAILURE;
    }

    int c; // note: int, not char, required to handle EOF
    while ((c = fgetc(fp)) != EOF) { // standard C I/O file reading loop
       putchar(c);
    }
 
    if (ferror(fp))
        puts("I/O error when reading");
    else if (feof(fp))
        puts("End of file reached successfully");
 
    fclose(fp);

	for(i=0;i<n;i++)  //ñîçäàíèå òàáëèöû êîìàíä  ØÀÃ1
	{	fgets(tbl[i].name,10,fin); //ñ÷èòûâàíèå êîìàíäû èç ôàéëà
		j=0;
		while(tbl[i].name[j]!=10) // çàäàíèå íàçâàíèÿ êîìàíäû
			j++;
		tbl[i].name[j]=0;
		tbl[i].adress=rand();// çàäàíèå àäðåñà êîìàíäû ØÀÃ2
	}
	printf("Ñïèñîê êîìàíä\n");
	fprintf(fout,"Ñïèñîê êîìàíä\n");
	for(i=0;i<n;i++)// âûâîä òàáëèöû íà ýêðàí
	{	printf("%s\n",tbl[i].name);
		fprintf(fout,"%s\n",tbl[i].name);
	}
do // ØÀÃ3
{	
found=false;//ôëàã âûêëþ÷åí ØÀÃ4
		printf(">");
		fprintf(fout,">");
		gets_s(buf);// ñ÷èòûâàíèå ñ ýêðàíà
		fprintf(fout,"%s\n",buf);//çàïèñü â ôàéë
		for(i=0;i<n;i++)//ïîèñê êîìàíäû ïî òàáëèöå ØÀÃ5
		{if(!strcmp(buf,tbl[i].name))
			{
				printf("Àäðåñ ýòîé ïîäïðîãðàììû äëÿ äàííîé êîìàíäû %d\n",tbl[i].adress);//âûâîä íà ýêðàí ïîëó÷åííîãî ðåçóëüòàòà
				fprintf(fout,"Àäðåñ ýòîé ïîäïðîãðàììû äëÿ äàííîé êîìàíäû %d\n",tbl[i].adress);// çàïèñü â ôàéë ïîëó÷åííîãî ðåçóëüòàòà
				found=true;// ôëàã âêëþ÷åí
				break;
			}
}
		if((!found)&&(strcmp(e,buf)))// ØÀÃ6
	{
			printf("Òàêîé êàìàíäû íåò.\n");//âûâîä íà ýêðàí ïîëó÷åííîãî ðåçóëüòàòà ØÀÃ7
			fprintf(fout,"Òàêîé êàìàíäû íåò.\n");// çàïèñü â ôàéë ïîëó÷åííîãî ðåçóëüòàòà ØÀÃ8
		}
}
	while(strcmp(e,buf));//âûõîä èç ïðîãðàììû
	fclose(fin);//çàêðûòèå ôàéëà. Øàã 9
	fclose(fout);//çàêðûòèå ôàéëà
}
[C++ Error] File1.cpp(59): E2268 Call to undefined function 'gets_s'
[C++ Warning] File1.cpp(79): W8070 Function should return a value
[C++ Error] File1.cpp(81): E2040 Declaration terminated incorrectly
Vzlom вне форума Ответить с цитированием
Старый 21.09.2018, 15:17   #4
Vzlom
Форумчанин
 
Регистрация: 11.02.2013
Сообщений: 155
По умолчанию

Не пойму, почему он буфер не читает с get_s
Vzlom вне форума Ответить с цитированием
Старый 21.09.2018, 15:21   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от Vzlom Посмотреть сообщение
[C++ Error] File1.cpp(59): E2268 Call to undefined function 'gets_s'
Так же, как и с fopen https://en.cppreference.com/w/c/io/gets

Цитата:
Сообщение от Vzlom Посмотреть сообщение
[C++ Warning] File1.cpp(79): W8070 Function should return a value
Раз указали, что мейн возвращает что-то, то и возвращайте. Или переходите на новый стандарт, там можно не писать.
p51x на форуме Ответить с цитированием
Старый 21.09.2018, 15:23   #6
Vzlom
Форумчанин
 
Регистрация: 11.02.2013
Сообщений: 155
По умолчанию

Сделал вывод через get.
Добавил return, для функции.

[C++ Error] File1.cpp(89): E2040 Declaration terminated incorrectly - фиг пойми на что ругается
Vzlom вне форума Ответить с цитированием
Старый 21.09.2018, 15:26   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

На то, что вы закрывающую скобку с точкой запятой для структуры закомментарили.
p51x на форуме Ответить с цитированием
Старый 21.09.2018, 16:19   #8
Vzlom
Форумчанин
 
Регистрация: 11.02.2013
Сообщений: 155
По умолчанию

Код:
#include <iostream>
#include <fstream>
using namespace std;
const int n=13;
struct table //Объявили новую структуру table, создание структуры запроса.
{
	char name[10];//Первый параметр
	int adress;//Второй параметр
        }
     void main()
  {
	setlocale(LC_ALL, "Russian"); // подключение русского языка
	struct table tbl[n]; // Объявили массив переменных  типа table
	FILE *fin,*fout; //создаем указатели на переменную типа FILE
	char e[]="exit"; // создаем строку содержащую слово "exit"
	int i,j; //создаем 2 переменные типа int, для перебора
	bool found; //создаем переменную типа bool, флаг
	char buf[10]; //создание буфера
	e[5]=0;



    FILE* fp = fopen("input.txt", "r");
    if(!fp) {
        perror("File opening failed");

    }

    char c; // note: int, not char, required to handle EOF
    while ((c = fgetc(fp)) != EOF) { // standard C I/O file reading loop
       putchar(c);
    }
 
    if (ferror(fp))
        puts("I/O error when reading");
    else if (feof(fp))
        puts("End of file reached successfully");
 
    fclose(fp);

	for(i=0;i<n;i++)  //создание таблицы команд  ШАГ1
	{	fgets(tbl[i].name,10,fin); //считывание команды из файла
		j=0;
		while(tbl[i].name[j]!=10) // задание названия команды
			j++;
		tbl[i].name[j]=0;
		tbl[i].adress=rand();// задание адреса команды ШАГ2
	}
	printf("Список команд\n");
	fprintf(fout,"Список команд\n");
	for(i=0;i<n;i++)// вывод таблицы на экран
	{	printf("%s\n",tbl[i].name);
		fprintf(fout,"%s\n",tbl[i].name);
	}
do // ШАГ3
{	
found=false;//флаг выключен ШАГ4
		printf(">");
		fprintf(fout,">");
		gets(buf);// считывание с экрана
		fprintf(fout,"%s\n",buf);//запись в файл
		for(i=0;i<n;i++)//поиск команды по таблице ШАГ5
		{if(!strcmp(buf,tbl[i].name))
			{
				printf("Адрес этой подпрограммы для данной команды %d\n",tbl[i].adress);//вывод на экран полученного результата
				fprintf(fout,"Адрес этой подпрограммы для данной команды %d\n",tbl[i].adress);// запись в файл полученного результата
				found=true;// флаг включен
				break;
			}
}
		if((!found)&&(strcmp(e,buf)))// ШАГ6
	{
			printf("Такой каманды нет.\n");//вывод на экран полученного результата ШАГ7
			fprintf(fout,"Такой каманды нет.\n");// запись в файл полученного результата ШАГ8
		}
}
	while(strcmp(e,buf));//выход из программы
	fclose(fin);//закрытие файла. Шаг 9
	fclose(fout);//закрытие файла
}
Указал через void main ()
Что бы return не вовзращать

[C++ Error] File1.cpp(10): E2176 Too many types in declaration
[C++ Error] File1.cpp(11): E2111 Type 'table' may not be defined here
[C++ Error] File1.cpp(26): E2034 Cannot convert 'int' to 'table'


Тип таблицы объявлен, void не запрашивает возвращение return. Что за беда творится?
Vzlom вне форума Ответить с цитированием
Старый 21.09.2018, 18:48   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
закрывающую скобку с точкой запятой для структуры закомментарили
Куда дели?
p51x на форуме Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибки Hetls Microsoft Office Access 0 01.06.2017 22:30
Игра - викторина. Ошибки, ошибки, ошибки!.. three_cats Общие вопросы C/C++ 1 27.10.2012 21:47
c++ ошибки Алена_=))) Помощь студентам 2 14.02.2011 18:07
Ошибки delphin100 Операционные системы общие вопросы 12 17.04.2008 14:15