Структуры. Error 1 error C3861: identifier not found - C (СИ)
Формулировка задачи:
День добрый. Пишет ошибки:
Error 1 error C3861: 'func_write': identifier not found i:\ravino\lab6\lab6\lab8_1.cpp 46.
Error 2 error C3861: 'func_read': identifier not found i:\ravino\lab6\lab6\lab8_1.cpp 47.
Error 3 error C3861: 'func_add_edit': identifier not found i:\ravino\lab6\lab6\lab8_1.cpp 48
Помогите, пожалуйста.
//ЗАДАНИЕ: Создать программу (выполнив функциональное разбиение) реализующую следующие функции работы с бинарным файлом. Предусмотреть создание меню со следующими пунктами: // 1 – СОЗДАНИЕ НОВОГО ФАЙЛА //2– ПРОСМОТР ФАЙЛА //3 – КОРРЕКТИРОВКА ЗАПИСЕЙ ФАЙЛА (изменение, добавление новой записи, удаление записи) //4 – ВЫПОЛНЕНИЕ ЗАДАЧИ //5 – ВЫХОД //10. Создать файл, содержащий сведения о телефонах абонентов. Каждая запись имеет поля: фамилия абонентов, год установки телефона, номер телефона. На печать вывести информацию следующего вида: //ПО ВВОДИМОЙ С КЛАВИАТУРЫ ФАМИЛИИ АБОНЕНТА ВЫДАЕТСЯ ИНФОРМАЦИЯ О ВСЕХ ИМЕЮЩИХСЯ НОМЕРАХ ТЕЛЕФОНОВ (СОРТИРОВКА ПО ГОДУ УСТАНОВКИ), ОПРЕДЕЛЯЕТСЯ КОЛИЧЕСТВО УСТАНОВЛЕННЫХ ТЕЛЕФОНОВ С XXXX ГОДА (ГОД ВВОДИТСЯ С КЛАВИАТУРЫ). #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <Windows.h> #include <locale.h> #include <conio.h> #include <stdlib.h> #include <malloc.h> #include <math.h> #include <string.h> #include <io.h> typedef struct phones { char lastname[40]; int year; int number; int amount; }emp; emp a,b[40],c[40]; void main(){ setlocale(LC_CTYPE, "Russian"); system("cls"); fflush(stdin); char key; for (;;){ system("cls"); fflush(stdin); printf("[ Сведения о номерах телефонов абонентов ]\n"); printf("1 СОЗДАНИЕ НОВОГО ФАЙЛА\n"); printf("2 ПРОСМОТР ФАЙЛА\n"); printf("3 КОРРЕКТИРОВКА ЗАПИСЕЙ ФАЙЛА\n"); printf("4 ВЫВЕСТИ ИНФОРМАЦИЮ О ТЕЛЕФОНАХ\n"); printf("5 ВЫХОД\n\n>"); key = _getche(); switch (key){ case '1':{func_write();}break; case '2':{func_read();}break; case '3':{func_add_edit();}break; //case '4':{func_output();}break; /*case '5':exit(0); */ }//закрыт бесконечный цикл _getch(); } } void func_write(){ setlocale(LC_CTYPE, "Russian"); char h; FILE *f; if (!(f = fopen("Work.txt", "wb"))){ printf("Не могу создать или открыть файл!\n"); return; } for (;;){ printf("Введите Фамилию абонента.>\n"); fflush(stdin); gets(a.lastname); printf("Год установки телефона>\n"); scanf("%5d", &a.year); printf("Номер телефона>\n"); scanf("%3d", &a.number); fwrite(&a, sizeof(a), 1, f);//Сохранение в файл блока данных fprintf(f, "%40s|%5d|%3d|n", a.lastname, a.year, a.number); printf("---------------------------------------------------------------\n<ESC> для отмены <любая кнопка> для продолжения\n>"); h = _getch(); if (h == 27)break; } fclose(f); printf("\nКонец создания записи\n"); } int func_read(){ //system("cls"); int j = 0; FILE *f; if (!(f = fopen("Work.txt", "rb"))){ printf("Ошибкa открытия файла\n"); return 0; } printf("\n[ Содержимое файла Work.txt ]\nNo. | Фамилия | Год установки | Номер телефона |\n\ -----------------------------------------------------------\n"); while (fread(&b[j], sizeof(a), 1, f)) { if (feof(f)) break; printf("%3d | %30s | %5d | %3d | %6d\n", j, b[j].lastname, b[j].year, b[j].number); j++; } fclose(f); printf("\nКонец файла\n"); return j; } void func_add_edit(){ setlocale(LC_CTYPE, "Russian"); printf("[ Выберите действие ]\n"); printf("1 ДОБАВЛЕНИЕ НОВОГО АБОНЕНТА\n"); printf("2 УДАЛЕНИЕ АБОНЕНТА ИЗ СПИСКА\n"); printf("3 РЕДАКТИРОВАНИЕ АБОНЕНТА ИЗ СПИСКА\n"); printf("4 НАЗАД\n\n>"); int n=0,i=0, j; char key; do key = _getche(); while ((key != '1') && (key != '2') && (key != '3') && (key != '4')); //-------------РЕДАКТИРОВАНИЕ---------------------- if (key == '3'){ j = func_read();//демонстрируем список и считываем в память список printf("Для редактирования введите номер из списка\n>"); do scanf("%d",&n);//вводим номер присутствующий в списке while (!(n <= j)); FILE *f; if (!(f = fopen("Work.txt", "wb"))){// открываем с целью полностью переписать из памяти printf("Ошибкa открытия файла\n"); return; } for (i = 0; i < j; i++){ if (i==n){//считаем по редактируемой записи printf("Редактируамая запись:\n"); printf("%3d | %30s | %5d | %3d \n", n, b[n].lastname, b[n].year, b[n].number); //fflush(stdin); printf("Введите Фамилию абонента>\n"); gets(c[n].lastname); printf("Год подключения>\n"); scanf("%5d", &c[n].year); printf("Номер телефона>\n"); scanf("%3d", &c[n].number); fwrite(&c[n], sizeof(a), 1, f);//вводим вместо редактируемой записи свой элемент и продолжаем цикл } if (i!=n)//пишем в файл прочитанный список исключая редактирумеую запись fwrite(&b[i], sizeof(a), 1, f); } fclose(f); } //--------------УДАЛЕНИЕ---------------------------- else if (key == '2'){ j = func_read();//демонстрируем список и считываем в память список printf("Для удаления введите номер из списка\n>"); do scanf("%d", &n);//вводим номер присутствующий в списке while (!(n <= j)); FILE *f; if (!(f = fopen("Work.txt", "wb"))){// открываем с целью полностью переписать из памяти printf("Ошибкa открытия файла\n"); return; } for (i = 0; i < j; i++){ if (i == n){//считаем по удаляемой записи printf("Удаляемая запись:\n"); printf("%3d | %30s | %5d | %3d \n[ПОДТВЕРДИТЕ УДАЛЕНИЕ!] <Y>/<N>\n>", n, b[n].lastname, b[n].year, b[n].number); key = _getche(); if (key == 'y') i++; else fwrite(&b[i], sizeof(a), 1, f);//после подтверждения проскакиваем удаляемый элемент либо отказываемся его удалять и просто продолжаем цикл } if (i != n) fwrite(&b[i], sizeof(a), 1, f);//пишем в файл прочитанный список исключая удаляемую запись } fclose(f); } //---------------ДОБАВЛЕНИЕ------------------------------------------ else if (key == '1'){ FILE *f; if (!(f = fopen("Work.txt", "ab"))){ printf("Ошибкa открытия файла\n"); return; } for (;;){ printf("--------------------------------------------------------------\n<ESC> для отмены <любая кнопка> для добавления\n>"); char h = _getch();//для выхода из бесконечного цикла if (h == 27)break; printf("Введите Фамилию абонента>\n"); fflush(stdin); gets(a.lastname); printf("Год подключения>\n"); scanf("%5d", &a.year); printf("Номер>\n"); scanf("%3d", &a.number); fwrite(&a, sizeof(a), 1, f);//Сохранение в файл блока данных } fclose(f); printf("\nКонец создания записи\n"); } else if (key == '4')return;//возврат в главное меню }
Решение задачи: «Структуры. Error 1 error C3861: identifier not found»
textual
Листинг программы
void func_write(); int func_read(); void func_add_edit();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д