Код не компилируется - C (СИ) (149570)
Формулировка задачи:
В чем ошибка? Не хочет запускаться. Среда Pelles C.
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
struct student//структура
{
// Фамилия
char fam[15];
// Имя
char im[15];
// Отчество
char otch[15];
// Номер зачетной книжки
unsigned short int nomzach;
// Дата рождения
char datrozh[10];
};
struct student *mas;
int n=0;
FILE *f;
// Номер зачетной книжки
unsigned int nomzach;
// Фамилия
char fam[15];
// Имя
char im[15];
// Отчество
char otch[15];
// Дата рождения
char datrozh[10];
void insertMas(int i)
{
printf("-----------------------\n"); getchar();
printf("Фамилия: "); gets(fam);
printf("Имя: "); gets(im);
printf("Отчество: "); gets(otch);
printf("Номер зачетной книжки: "); scanf("%06d",&nomzach); getchar();
printf("Дата рождения: "); gets(datRozh);
strcpy(mas[i].fam,fam);
strcpy(mas[i].im,im);
strcpy(mas[i].otch,otch);
mas[i].nomzach=nomzach;
strcpy(mas[i].datrozh,datrozh);
}
void addMas()//добавление
{
_clrscr();
mas = (struct student *) realloc(mas, n * sizeof(struct student));
insertMas(n-1);
printf("Данные успешно добавлены..."); _getch();
}
void showMas(int i)//вывод 1 записи
{
printf("№%d Фамилия %s Имя %s Отчество %s Номер зачетной книжки %06d Дата рождения %s\n",
i+1, mas[i].fam, mas[i].im, mas[i].otch, mas[i].nomZach, mas[i].datrozh);
}
void showAllMas()//вывод всего масива
{
_clrscr();
for (int i=0; i<n; i++)
showMas(i);
printf("Продолжить..."); _getch();
}
void saveMas(char *name)//сохранение
{
if ((f=fopen(name, "w"))==0)
printf("Ошибка создания файла!\n");
else
{
f=fopen(name, "r+");
for (int i=0;i<n;i++)
fwrite(&mas[i], sizeof(struct student), 1, f);
fclose(f);
printf("Данные успешно сохранены..."); _getch();
}
}
void loadMas(char *name)//загрузить
{
n=0;
if ((f = fopen(name, "r+")) == 0)
printf("Файл не найден!");
else
while (!feof(f))
{
mas = (struct student *) realloc(mas, ++n * sizeof(struct student));
fread(&mas[n-1], sizeof(struct student), 1, f);
}
n--;
fclose(f);
printf("Данные успешно загружены..."); _getch();
}
void editMas()//редактирование
{
_clrscr();
unsigned int nomzach;
printf("Введите номер зачетной книжки: "); scanf("%d", &nomzach);
for (int i=0;i<n;i++)
if (mas[i].nomzach==nomzach) insertMas(i);
printf("Данные успешно изменены..."); _getch();
}
void deleteMas()//удаление из массива
{
int del;
_clrscr();
showAllMas();
printf("Номер удаляемой записи: "); scanf("%d",&del);
del--;
for (int i=del;i<n-1;i++)
{
strcpy(mas[i].fam,mas[i+1].fam);
strcpy(mas[i].im,mas[i+1].im);
strcpy(mas[i].otch,mas[i+1].otch);
mas[i].nomzach=mas[i+1].nomzach;
strcpy(mas[i].datrozh,mas[i+1].datrozh);
}
n--;
mas = (struct student *) realloc(mas, n * sizeof(struct student));
printf("Элемент удалён..."); _getch();
}
void obmenMas(int i)//обмен элементов
{
strcpy(fam,mas[i].fam);
strcpy(im,mas[i].im);
strcpy(otch,mas[i].otch);
nomzach=mas[i].nomzach;
strcpy(datrozh,mas[i].datrozh);
strcpy(mas[i].fam,mas[i+1].fam);
strcpy(mas[i].im,mas[i+1].im);
strcpy(mas[i].otch,mas[i+1].otch);
mas[i].nomzach=mas[i+1].nomzach;
strcpy(mas[i].datrozh,mas[i+1].datrozh);
strcpy(mas[i+1].fam,fam);
strcpy(mas[i+1].im,im);
strcpy(mas[i+1].otch,otch);
mas[i+1].nomzach=nomzach;
strcpy(mas[i+1].datrozh,datRrozh);
}
void sort2()//сортировка по убыванию
{
for (int j=0; j<n; j++)
for (int i=0; i<n-1; i++)
if (mas[i].nomzach < mas[i+1].nomzach)
obmenMas(i);
printf("Сортировка завершена..."); _getch();
}
void sort1()//сортировка по возрастанию
{
for (int j=0; j<n; j++)
for (int i=0; i<n-1; i++)
if (mas[i].nomzach > mas[i+1].nomzach)
obmenMas(i);
printf("Сортировка завершена..."); _getch();
}
void sortMas()//выбор сортировки
{
_clrscr();
int key;
printf("1 - по возрастанию\n");
printf("2 - по убыванию\n");
printf("Ввод: "); scanf("%d", &key);
switch (key) {
case 1: { sort1(); break;}
case 2: { sort2(); break;}
}
}
void findFam()//поиск по фамилии
{
_clrscr();
char fam[15];
printf("Фамилия: "); scanf("%s", &fam);
for (int i=0; i<n; i++)
if (strcmp(mas[i].fam, fam)==0)
showMas(i);
printf("Продолжить..."); _getch();
}
void findIm()//поиск по имени
{
_clrscr();
char im[15];
printf("Фамилия: "); scanf("%s", &im);
for (int i=0; i<n; i++)
if (strcmp(mas[i].im, im)==0)
showMas(i);
printf("Продолжить..."); _getch();
}
void findOtch()//поиск по отчеству
{
_clrscr();
char otch[15];
printf("Отчество: "); scanf("%s", &otch);
for (int i=0; i<n; i++)
if (strcmp(mas[i].otch, otch)==0)
showMas(i);
printf("Продолжить..."); _getch();
}
void findNomZach()//поиск по зачетки
{
_clrscr();
int nomzach;
printf("Номер зачетной книжки: "); scanf("%d", &nomzach);
for (int i=0; i<n; i++)
if (mas[i].nomzach==nomzach) showMas(i);
printf("Продолжить..."); _getch();
}
void findDatRozh()//поиск по дате рождения
{
_clrscr();
char datrozh[10];
printf("Дата рождения: "); scanf("%s", &datrozh);
for (int i=0; i<n; i++)
if (strcmp(mas[i].datrozh, datrozh)==0)
showMas(i);
printf("Продолжить..."); _getch();
}
void findMas()//поиск
{
_clrscr();
int key;
printf("1 - поиск по Фамилии\n");
printf("2 - поиск по Имени\n");
printf("3 - поиск по Отчеству\n");
printf("4 - поиск по Номер зачетки\n");
printf("5 - поиск по Дате рождения\n");
printf("Ввод: "); scanf("%d", &key);
switch (key) {
case 1: {findFam();break;}
case 2: {findIm();break;}
case 3: {findOtch();break;}
case 4: {findNomZach();break;}
case 5: {findDatRozh();break;}
}
}
void filterFam()// Фильтрация по Фамилии
{
_clrscr();
char fam[15];
printf("Фильтр Фамилии: "); scanf("%s", &fam);
for (int i=0; i<n; i++)
if (strspn(mas[i].fam, fam)>0)
showMas(i);
printf("Продолжить..."); _getch();
}
void filterIm()// Фильтрация по Имени
{
_clrscr();
char im[15];
printf("Фильтр Имени: "); scanf("%s", &im);
for (int i=0; i<n; i++)
if (strspn(mas[i].im, im)>0)
showMas(i);
printf("Продолжить..."); _getch();
}
void filterOtch()// Фильтрация по Отчеству
{
_clrscr();
char otch[15];
printf("Фильтр отчества: "); scanf("%s", &otch);
for (int i=0; i<n; i++)
if (strspn(mas[i].otch, otch)>0)
showMas(i);
printf("Продолжить..."); _getch();
}
void filterNomZach()// фильтр по номеру зачетки
{
_clrscr();
char nomzach[5];
printf("Фильтр номера зачетки: "); scanf("%s", &nomzach);
char temp[11];
for (int i=0; i<n; i++)
{
sprintf(temp, "%d", mas[i].nomzach);
if (strspn(temp, nomzach)>0)
showMas(i);
}
printf("Продолжить..."); _getch();
}
void filterDatRozh()// Фильтрация по дате рождения
{
_clrscr();
char datrozh[10];
printf("Фильтр даты рождения: "); scanf("%s", &datrozh);
for (int i=0; i<n; i++)
if (strspn(mas[i].datrozh, datrozh)>0)
showMas(i);
printf("Продолжить..."); _getch();
}
void filterMas()// фильтрация
{
_clrscr();
int key;
printf("1 - фильтр по фамилии\n");
printf("2 - фильтр по имени\n");
printf("3 - фильтр по отчеству\n");
printf("4 - фильтр по номеру зачетки\n");
printf("5 - фильтр подате рожденич\n");
printf("Ввод: "); scanf("%d", &key);
switch (key) {
case 1: {filterFam();break;}
case 2: {filterIm();break;}
case 3: {filterOtch();break;}
case 4: {filterNomZach();break;}
case 5: {filterDatRozh();break;}
}
}
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"");
int key;
char *name = "baza.txt";
do {
_clrscr();
printf("1 - Добавить\n");
printf("2 - Показать\n");
printf("3 - Сохранить\n");
printf("4 - Загрузить\n");
printf("5 - Сортировака\n");
printf("6 - Редактировать\n");
printf("7 - Удаление\n");
printf("8 - Поиск\n");
printf("9 - Фильтрация\n");
printf("0 - Выход\n");
printf("Ввод: "); scanf("%d", &key);
switch (key) {
case 1: { addMas(++n); break;}
case 2: { showAllMas(); break;}
case 3: { saveMas(name); break;}
case 4: { loadMas(name); break;}
case 5: { sortMas(); break;}
case 6: { editMas(); break;}
case 7: { deleteMas(); break;}
case 8: { findMas(); break;}
case 9: {filterMas(); break;}
}
} while (key!=0);
return 0;
}[OBJC][/OBJC]Решение задачи: «Код не компилируется»
textual
Листинг программы
Building main.obj. main.c(27): warning #2018: Undeclared function 'gets' (did you mean 'getc'?); assuming 'extern' returning 'int'. main.c(30): warning #2018: Undeclared function 'strcpy' (did you mean 'strtof'?); assuming 'extern' returning 'int'. main.c(35): warning #2117: Old-style function definition for 'addMas'. main.c(36): warning #2018: Undeclared function '_clrscr' (did you mean '_lrotr'?); assuming 'extern' returning 'int'. main.c(39): warning #2018: Undeclared function '_getch' (did you mean 'getc'?); assuming 'extern' returning 'int'. main.c(49): warning #2117: Old-style function definition for 'showAllMas'. main.c(50): warning #2018: Undeclared function '_clrscr' (did you mean '_lrotr'?); assuming 'extern' returning 'int'. main.c(53): warning #2018: Undeclared function '_getch' (did you mean 'getc'?); assuming 'extern' returning 'int'. main.c(66): warning #2018: Undeclared function '_getch' (did you mean 'getc'?); assuming 'extern' returning 'int'. main.c(83): warning #2018: Undeclared function '_getch' (did you mean 'getc'?); assuming 'extern' returning 'int'. main.c(87): warning #2117: Old-style function definition for 'editMas'. main.c(88): warning #2018: Undeclared function '_clrscr' (did you mean '_lrotr'?); assuming 'extern' returning 'int'. main.c(93): warning #2018: Undeclared function '_getch' (did you mean 'getc'?); assuming 'extern' returning 'int'. main.c(97): warning #2117: Old-style function definition for 'deleteMas'. main.c(99): warning #2018: Undeclared function '_clrscr' (did you mean '_lrotr'?); assuming 'extern' returning 'int'. main.c(107): warning #2018: Undeclared function 'strcpy' (did you mean 'strtof'?); assuming 'extern' returning 'int'. main.c(111): warning #2018: Undeclared function '_getch' (did you mean 'getc'?); assuming 'extern' returning 'int'. main.c(118): warning #2018: Undeclared function 'strcpy' (did you mean 'strtof'?); assuming 'extern' returning 'int'. main.c(128): warning #2117: Old-style function definition for 'sort2'. main.c(133): warning #2018: Undeclared function '_getch' (did you mean 'getc'?); assuming 'extern' returning 'int'. main.c(137): warning #2117: Old-style function definition for 'sort1'. main.c(142): warning #2018: Undeclared function '_getch' (did you mean 'getc'?); assuming 'extern' returning 'int'. main.c(146): warning #2117: Old-style function definition for 'sortMas'. main.c(147): warning #2018: Undeclared function '_clrscr' (did you mean '_lrotr'?); assuming 'extern' returning 'int'. main.c(159): warning #2117: Old-style function definition for 'findflightNumber'. main.c(160): warning #2018: Undeclared function '_clrscr' (did you mean '_lrotr'?); assuming 'extern' returning 'int'. main.c(165): warning #2018: Undeclared function '_getch' (did you mean 'getc'?); assuming 'extern' returning 'int'. main.c(169): warning #2117: Old-style function definition for 'findDate'. main.c(170): warning #2018: Undeclared function '_clrscr' (did you mean '_lrotr'?); assuming 'extern' returning 'int'. main.c(172): warning #2234: Argument 2 to 'scanf' does not match the format string; expected 'char *' but found 'char (*)[17]'. main.c(174): warning #2018: Undeclared function 'strcmp' (did you mean 'strtof'?); assuming 'extern' returning 'int'. main.c(176): warning #2018: Undeclared function '_getch' (did you mean 'getc'?); assuming 'extern' returning 'int'. main.c(180): warning #2117: Old-style function definition for 'findPlaceNumber'. main.c(181): warning #2018: Undeclared function '_clrscr' (did you mean '_lrotr'?); assuming 'extern' returning 'int'. main.c(186): warning #2018: Undeclared function '_getch' (did you mean 'getc'?); assuming 'extern' returning 'int'. main.c(190): warning #2117: Old-style function definition for 'findMas'. main.c(191): warning #2018: Undeclared function '_clrscr' (did you mean '_lrotr'?); assuming 'extern' returning 'int'. main.c(205): warning #2117: Old-style function definition for 'filterDate'. main.c(206): warning #2018: Undeclared function '_clrscr' (did you mean '_lrotr'?); assuming 'extern' returning 'int'. main.c(208): warning #2234: Argument 2 to 'scanf' does not match the format string; expected 'char *' but found 'char (*)[17]'. main.c(210): warning #2018: Undeclared function 'strspn' (did you mean 'strtof'?); assuming 'extern' returning 'int'. main.c(212): warning #2018: Undeclared function '_getch' (did you mean 'getc'?); assuming 'extern' returning 'int'. main.c(216): warning #2117: Old-style function definition for 'filterPlaceNumber'. main.c(217): warning #2018: Undeclared function '_clrscr' (did you mean '_lrotr'?); assuming 'extern' returning 'int'. main.c(219): warning #2234: Argument 2 to 'scanf' does not match the format string; expected 'char *' but found 'char (*)[5]'. main.c(224): warning #2018: Undeclared function 'strspn' (did you mean 'strtof'?); assuming 'extern' returning 'int'. main.c(227): warning #2018: Undeclared function '_getch' (did you mean 'getc'?); assuming 'extern' returning 'int'. main.c(231): warning #2117: Old-style function definition for 'filterFlightNumber'. main.c(232): warning #2018: Undeclared function '_clrscr' (did you mean '_lrotr'?); assuming 'extern' returning 'int'. main.c(234): warning #2234: Argument 2 to 'scanf' does not match the format string; expected 'char *' but found 'char (*)[5]'. main.c(239): warning #2018: Undeclared function 'strspn' (did you mean 'strtof'?); assuming 'extern' returning 'int'. main.c(242): warning #2018: Undeclared function '_getch' (did you mean 'getc'?); assuming 'extern' returning 'int'. main.c(246): warning #2117: Old-style function definition for 'filterMas'. main.c(247): warning #2018: Undeclared function '_clrscr' (did you mean '_lrotr'?); assuming 'extern' returning 'int'. main.c(266): warning #2018: Undeclared function '_clrscr' (did you mean '_lrotr'?); assuming 'extern' returning 'int'. Done.