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