Структуры. 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();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5