Исправить ошибку в коде - C (СИ) (69747)
Формулировка задачи:
задача
Удалить спортсмена из наименьшим количеством очков.
КОД:
Работаю в визуалке 2013
Ошибки : Warning 1 warning C4101: 'ch' : unreferenced local variable d:\ 86 1 ConsoleApplication4
Error 2 error C4700: uninitialized local variable 'fp' used d:\source.cpp 26 1 ConsoleApplication4
Помогите пожалуйста.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> struct sport { char name[10]; int number; int kol; } sp; void input(FILE *); // создание нового файла void print(FILE *); // просмотр файла void app(FILE *); // добавление в файл void del(FILE *); // удаление игрока с наименьшим количеством очков int main(void) { char c; FILE *fp; while (1) { puts(" 1 – новый файл"); puts(" 2 – просмотр файла"); puts(" 3 – добавление в файл"); puts(" 4 – удаление игрока с наименьшим количеством очков"); puts(" 0 - выход"); c = getchar(); switch (c) { case '1':input(fp); break;// [B]вот тут ошибка[/B] case '2':print(fp); break; case '3':app(fp); break; case '4':del(fp); break; case '0':return 0; default: puts("неверный режим"); } } } void input(FILE *fp) { char ch; fp = fopen("file1.dat", "wb"); // открытие бинарного файла для записи printf("\n Введите информацию о спортсменах \n"); do { printf("\n Фамилия: "); scanf("%s", sp.name); printf(" Номер: "); scanf("%d", &sp.number); printf(" Количество очков: "); scanf("%d", &sp.kol); fwrite(&sp, sizeof(sp), 1, fp); // запись в файл одной структуры sp printf("\n Закончить? y/n "); ch = getchar(); } while (ch != 'y'); fclose(fp); } void print(FILE *fp) { int i; fp = fopen("file1.dat", "rb"); // открытие бинарного файла для чтения i = 1; fread(&sp, sizeof(sp), 1, fp); // чтение из файла одной структуры sp while (!feof(fp)) { printf("\n %3d спортсмен %-10s номер %d очков %d", i, sp.name, sp.number, sp.kol); fread(&sp, sizeof(sp), 1, fp); i++; } getchar(); } void app(FILE *fp) { char ch; fp = fopen("file1.dat", "ab"); // открытие бинарного файла для добавления printf("\n Введите информацию о спортсменах \n"); do { printf("\n Фамилия: "); scanf("%s", sp.name); printf(" Номер: "); scanf("%d", &sp.number); printf(" Количество очков: "); scanf("%d", &sp.kol); fwrite(&sp, sizeof(sp), 1, fp); printf("Закончить? y/n "); ch = getchar(); } while (ch != 'y'); fclose(fp); } void del(FILE *fp) { char ch; // [B]ВОТ ТУТ ОШИБКА[/B] int i, j, n, h; sport *s, p; fp = fopen("file1.dat", "rb"); // открытие бинарного файла для чтения // подсчет числа записей в файле n = 0; fseek(fp, 0, 2); n = ftell(fp) / sizeof(sport); rewind(fp); s = (sport *)malloc(n*sizeof(sp)); // заполнение массива for (i = 0, h = 1; i<n; ++i) { fread(&sp, sizeof(sp), 1, fp); s[i] = sp; printf("\n %3d спортсмен %-10s номер %d очков %d", h, sp.name, sp.number, sp.kol); h++; } fclose(fp); fp = fopen("file1.dat", "wb"); // открытие бинарного файла для записи j = 1; while (j) { j = 0; for (i = 0; i<n - 1; i++) { if (s[i].kol<s[i + 1].kol) { p = s[i]; s[i] = s[i + 1]; s[i + 1] = p; j = 1; } } } for (i = 0; i<n - 1; ++i) fwrite(&s[i], sizeof(sp), 1, fp); printf("\n\n Спортсмен с наименьшим количеством очков: %5s (%d) удален. ", s[n - 1].name, s[n - 1].kol); getchar(); free(s); // Освобождение выделенной по адресу s памяти fclose(fp); }
Решение задачи: «Исправить ошибку в коде»
textual
Листинг программы
s = (struct sport *)malloc(n*sizeof(sp));
Объяснение кода листинга программы
s
- это переменная, которая будет использоваться для хранения указателя на структуруsp
.n
- это переменная, которая содержит количество структур, которые нужно выделить в памяти.sp
- это структура данных, которую нужно выделить в памяти.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.sp
- это структура данных, которая содержит поля, такие какname
иvalue
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д