Ошибка "Неразрешенный внешний элемент" - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include "StdAfx.h"
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <locale.h>
#include <io.h>
 
void add_tex(void), lookup(void), del_tex(void), cop_tex(void), red_tex(void), poisk_tex(void), count(void);
char menu(void);
long int password;
long int pasw;
long int pasw2;
int str;
int i=0;
int nomer=0;
struct texnika{
    char naz[30];
    char tip[20];
    int kol_vo;
    int god;
    int cena;
};
struct texnika tender[50];
 
int main(void)
{
char choice;
do {
choice = menu();
switch(choice) {
case '2': add_tex();
break;
case '1': lookup();
break;
case '3': del_tex();
break;
case '4': cop_tex();
break;
case '5': red_tex();
break;
case '7': poisk_tex();
break;
}
} while (choice!='6');
return 0;
}
 
/* вывод меню и получение запроса */
char menu(void)
{
char ch;
setlocale(LC_ALL,"Russian");
     printf("Введите пароль: ");
scanf("%ld",&password);
pasw = 123456;
pasw2 = 456789;
if(password!=pasw){
printf("Неверный пароль\n");
getch();
return 1;}
do {
printf("(1) Просмотр\n");
printf("(2) Добавить\n");
printf("(3) Удалить\n");
printf("(4) Копировать\n");
printf("(5) Редактировать\n");
printf("(6) Выход\n");
printf("(7) Поиск\n");
ch = tolower(getche());
printf("\n");
} while(ch != '3' && ch != '2' && ch != '1' && ch != '4' && ch !='5' && ch !='6' && ch !='7');
return ch;
 
}
/* добавление техники */
void add_tex(void)
{
FILE *fp;
char naz[80], tip[30];
int kol_vo, god, cena;
if((fp=fopen("input.txt", "a")) == NULL) {
printf("Невозможно открыть файл.");
exit(1);
}
printf("Введите название, тип, кол-во, год и цену: ");
fscanf(stdin, "%s%s%5d%d%d", &tender[i].naz, &tender[i].tip, &tender[i].kol_vo, &tender[i].god, &tender[i].cena);
fscanf(stdin, "%*c"); /* удаление возврата каретки из потока ввода */
fprintf(fp,"%s %s %d %d %d\n", &tender[i].naz, &tender[i].tip, tender[i].kol_vo, tender[i].god, tender[i].cena);
fclose(fp);
}
 
/* просмотр */
void lookup(void)
{
FILE *fp;
char naz[80], tip[80];
int kol_vo, god, cena;
if((fp=fopen("input.txt", "r")) == NULL) {
printf("Невозможно открыть файл.");
exit(1);
}
printf("\n|Название| Тип |Кол-во| Год | Цена |\n\n");
while (fscanf(fp,"%s%s%d%d%d",&tender[i].naz, &tender[i].tip, &tender[i].kol_vo, &tender[i].god, &tender[i].cena)!=EOF){
    
printf("%s\t%s\t%3d\t%d\t%d\n", &tender[i].naz, &tender[i].tip, tender[i].kol_vo, tender[i].god, tender[i].cena);}
nomer++;
fclose(fp);
}
/*удаление записи*/
void del_tex(void)
{
    FILE *fp;
    FILE *fp2;
    int nomer,i=0;
    //char naz[80], tip[80],mas[100];
//int kol_vo, god, cena;
    int str=0;
    char ch;
    if((fp=fopen("input.txt", "r")) == NULL) {
printf("Невозможно открыть файл.");
exit(1);
    }
    while (fscanf(fp,"%s%s%d%d%d",&tender[i].naz, &tender[i].tip, &tender[i].kol_vo, &tender[i].god, &tender[i].cena)!=EOF){
        str++;
        i++;
    }
    printf("Кол-во строк: %d\n",str);
        printf("Введите нормер записи которую надо удалить: \n");
    scanf("%d",&nomer);
    if (nomer<1 || nomer>str){
        printf("Неправильынй ввод!");
        getch();
        exit(1);
    }
    if((fp2=fopen("output.txt", "w")) == NULL) {
printf("Невозможно открыть файл.");
exit(1);
}
    else
{   
    for (i=0;i<str;i++){
    if (i!=(nomer-1)){
fprintf(fp2,"%s %s %d %d %d\n", &tender[i].naz, &tender[i].tip, tender[i].kol_vo, tender[i].god, tender[i].cena);
printf("%s\t%s\t%3d\t%d\t%d\n", tender[i].naz, tender[i].tip, tender[i].kol_vo, tender[i].god, tender[i].cena);
    }
    }
    fclose(fp2);
fclose(fp);
    remove("input.txt");
 if(0==rename ("output.txt","input.txt"))
     printf("Выполнено успешно\n");
    }
}
    /*Копирование в дополнительынй файл*/
void cop_tex(void)
{
    char var;
    char imya[20];
    FILE *fp, *fp2;
    const int size=256; 
char mass[size];
    /*Копирование*/
    if((fp=fopen("input.txt", "rb")) == NULL) {
printf("Невозможно открыть файл.");
exit(1);
}
    printf("Введите имя файла (с расширением): \n");
    scanf("%s",imya);
        if((fp2=fopen(imya, "wb")) == NULL) {
printf("Невозможно открыть файл.");
exit(1);
}
size_t read;
while((read = fread(mass,sizeof(char),size,fp)) != 0)
{
   fwrite(mass,sizeof(char),read,fp2);
   fclose(fp);
   fclose(fp2);
}
} 
 
void red_tex(void)
{
    FILE *fp;
    FILE *fp2;
    int nomer,i=0;
    int str=0;
    char ch;
    if((fp=fopen("input.txt", "r")) == NULL) {
printf("Невозможно открыть файл.");
exit(1);
    }
    while (fscanf(fp,"%s%s%d%d%d",&tender[i].naz, &tender[i].tip, &tender[i].kol_vo, &tender[i].god, &tender[i].cena)!=EOF){
        str++;
        i++;
    }
    printf("Кол-во строк: %d\n",str);
        printf("Введите номер записи которую необходимо редактировать: \n");
    scanf("%d",&nomer);
    if (nomer<1 || nomer>str){
        printf("Неправильынй ввод!");
        getch();
        exit(1);
    }
    if((fp2=fopen("output.txt", "w")) == NULL) {
printf("Невозможно открыть файл.");
exit(1);
}
    else
{   
    for (i=0;i<str;i++){
    if (i!=(nomer-1)){
fprintf(fp2,"%s %s %d %d %d\n", &tender[i].naz, &tender[i].tip, tender[i].kol_vo, tender[i].god, tender[i].cena);
//printf("%s\t%s\t%3d\t%d\t%d\n", tender[i].naz, tender[i].tip, tender[i].kol_vo, tender[i].god, tender[i].cena);
    }
    if (i==(nomer-1)){
        printf("Введите новое название, тип, кол-во, год и цену: ");
fscanf(stdin, "%s%s%5d%d%d", &tender[i].naz, &tender[i].tip, &tender[i].kol_vo, &tender[i].god, &tender[i].cena);
fscanf(stdin, "%*c"); /* удаление возврата каретки из потока ввода */
fprintf(fp2,"%s %s %d %d %d\n", &tender[i].naz, &tender[i].tip, tender[i].kol_vo, tender[i].god, tender[i].cena);
    }
    }
    fclose(fp2);
fclose(fp);
    remove("input.txt");
 if(0==rename ("output.txt","input.txt"))
     printf("Выполнено успешно\n");
    }
}
 
/*Поиск*/
void poisk_tex(void)
{
    FILE *fp;
    if((fp=fopen("input.txt", "r")) == NULL) {
printf("Невозможно открыть файл.");
exit(1);
    }
    while(!feof(fp)){
        ++i;
         fscanf(fp, "%s", tender[i].naz);
          fscanf(fp, "%s", tender[i].tip);
           fscanf(fp, "%f", &tender[i].kol_vo);
            fscanf(fp, "%f", &tender[i].god);
            fscanf(fp, "%f", &tender[i].cena);
            printf("%s%s%f%f%f",tender[i].naz, tender[i].tip, tender[i].kol_vo, tender[i].god, tender[i].cena);
    }
    count();
    printf("Введите название техники: \n");
    gets(tender[i].naz);
    int result=0;
    for (int i=1;i<=str;)
         {
            if(tender[0].naz==tender[i].naz)
            {
                printf("%s%s%f%f%f",tender[i].naz, tender[i].tip, tender[i].kol_vo, tender[i].god, tender[i].cena);
                i++;
                result++;
            }
            else
                i++;
 
        }
        if (result==0)
        {
            printf("Ничего не найдено\n");
        }
}
    void Count(void)
    {
        FILE *fp;
        fp=fopen("input.txt", "r");
        int i=0;
        int str=0;
        while(!feof(fp)) 
        {
            ++i;
            str++;
            fscanf(fp, "%s", tender[i].naz);
            fscanf(fp, "%f", &tender[i].god);
        }
        fclose(fp);
 
    }

Решение задачи: «Ошибка "Неразрешенный внешний элемент"»

textual
Листинг программы
 fp=fopen("input.txt", "r");

Объяснение кода листинга программы

  1. Открывается файл input.txt для чтения (r).
  2. Переменная fp используется для хранения файлового указателя.
  3. Если файл не может быть открыт, то программа выводит сообщение об ошибке и завершает свое выполнение.

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


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

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

11   голосов , оценка 4.182 из 5
Похожие ответы