Visual Studio 2013 - Как компилировать проект? - C (СИ)
Формулировка задачи:
Всем привет!
Скачал новую Visual Studio2013, решил запустить код написанный на Си
Все настройки для среды делал по этому гайду: http://social.msdn.microsoft.com/For...orum=vcgeneral
Проект запускается, но когда выполняется функция удаления данных с файла появляются ошибки с бесконечным записыванием в конец файла букв M и потерей информации с файла
В Visual Studio 2019 такого не было, подскажите, как исправить
Спасибо!
Решение задачи: «Visual Studio 2013 - Как компилировать проект?»
textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> #include <locale.h> #include <windows.h> #define baseFile "data.dat" #define maxLenghtStr 200 struct Entrans { char firstName[25 + 1]; char lastName[25 + 1]; char month[12 + 1]; int numberPhone; int time; int price; } part[100]; int checkBase() { FILE *file; if((file = fopen(baseFile, "r+")) == NULL) return 1; return 0; } void errorFile() { printf("Помилка пiд час вiдкриття файла!\nПерезапустiть програму i попробуйте ще раз!\n\n"); system("pause"); exit(0); } void gotoxy(short x, short y) { HANDLE StdOut = GetStdHandle(STD_OUTPUT_HANDLE); COORD coord = {x,y}; SetConsoleCursorPosition(StdOut, coord); } void getTextConsole(int n) { int i = 0; for (i = 0; i < n; i++) { printf("Абонент #%d\n", i + 1); printf("-------------------------------------\n"); printf("Введiть iмя: "); scanf("%s", &part[i].firstName); printf("Введiть прiзвище: "); scanf("%s", &part[i].lastName); printf("Введiть телефон: "); scanf("%d", &part[i].numberPhone); printf("Введiть мiсяць: "); scanf("%s", &part[i].month); printf("Введiть час розмови(в хвилинах): "); scanf("%d", &part[i].time); printf("Введiть вартiсть 1-oї хвилини: "); scanf("%d", &part[i].price); printf("-------------------------------------\n\n"); } } void addTextFile() { FILE *file; int n = 0, i, countStr = 0, flag = 0; char answer; char tmpFile[1000][maxLenghtStr + 1]; char tmpStr[maxLenghtStr + 1]; do { printf("Введiть кiлькiсть абонентiв для внесення в базу: "); scanf("%d", &n); fflush(stdin); } while(n <= 0); do { printf("Куда добавляти нових абонентiв(в початок файла - B, кiнець - E): "); scanf("%c", &answer); if (answer == 'e' || answer == 'E' || answer == 'b' || answer == 'B') flag = 1; fflush(stdin); } while (!flag); if (checkBase()) answer = 'e'; system("cls"); switch(answer) { case 'E': case 'e': getTextConsole(n); if((file = fopen(baseFile, "a")) == NULL) errorFile(); for (i = 0; i < n; i++) { fprintf(file, "%s\n", part[i].firstName); fprintf(file, "%s\n", part[i].lastName); fprintf(file, "%d\n", part[i].numberPhone); fprintf(file, "%s\n", part[i].month); fprintf(file, "%d\n", part[i].time); fprintf(file, "%d\n", part[i].price); } fclose(file); break; case 'B': case 'b': getTextConsole(n); if((file = fopen(baseFile, "r+")) == NULL) errorFile(); while (!feof(file)) { fgets(tmpStr, maxLenghtStr, file); strcpy(tmpFile[countStr++], tmpStr); } fclose(file); if((file = fopen(baseFile, "wt")) == NULL) errorFile(); for (i = 0; i < n; i++) { fprintf(file, "%s\n", part[i].firstName); fprintf(file, "%s\n", part[i].lastName); fprintf(file, "%d\n", part[i].numberPhone); fprintf(file, "%s\n", part[i].month); fprintf(file, "%d\n", part[i].time); fprintf(file, "%d\n", part[i].price); } fclose(file); if((file = fopen(baseFile, "a")) == NULL) errorFile(); for (i = 0; i < countStr; i++) fprintf(file, tmpFile[i]); fclose(file); break; } printf("Записи успiшно занесенi в файл!\n"); system("pause"); system("cls"); } void printTextFile(int pause) { FILE *file; int maxLengtStruct = readFile(), i, column = 4; system("cls"); printf("----------------------------------------------------------------------------\n"); printf("| Прiзвище, iм'я | Телефон | Мiсяць | Час розмови |Варт. 1-ої хв.|\n"); printf("----------------------------------------------------------------------------\n"); printf("| | | | | |\n"); printf("| | | | | |\n"); printf("| | | | | |\n"); printf("| | | | | |\n"); printf("| | | | | |\n"); printf("| | | | | |\n"); printf("| | | | | |\n"); printf("| | | | | |\n"); printf("| | | | | |\n"); printf("| | | | | |\n"); printf("| | | | | |\n"); printf("----------------------------------------------------------------------------\n"); for (i = 0; i < maxLengtStruct; i++) { gotoxy(4, column); printf("%s %s", part[i].firstName, part[i].lastName); gotoxy(25, column); printf("%d", part[i].numberPhone); gotoxy(37, column); printf("%s", part[i].month); gotoxy(51, column); printf("%d", part[i].time); gotoxy(65, column); printf("%d", part[i].price); gotoxy(80, column); printf("\n"); column += 1; } gotoxy(1, column + 10); if (!pause) system("pause"); } void deletePhone() { char phone[100]; char tmp; int lenghtFile = 0, i, j, count = 0; FILE *file; char tmpFile[1000][maxLenghtStr]; printf("Введiть телефон з яким видалити записи: "); scanf("%s", phone); strcat(phone, "\n"); if((file = fopen(baseFile, "r")) == NULL) errorFile(); while (!feof(file)) fgets(tmpFile[lenghtFile++], maxLenghtStr, file); fclose(file); if((file = fopen(baseFile, "w")) == NULL) errorFile(); for (i = 2; i < lenghtFile; i += 6) if (!strcmp(tmpFile[i], phone)) { for (j = -2; j < 4; j++) strcpy(tmpFile[i + j], ""); count++; } for (i = 0; i < lenghtFile; i++) fprintf(file, "%s", tmpFile[i]); fclose(file); printTextFile(1); if (count > 0) printf("Видалено записiв з таким телефоном: %d\n", count); else printf("Записи з таким телефоном не найденi!\n"); system("pause"); } int readFile() { FILE *file; int i = 0; if((file = fopen(baseFile, "r")) == NULL) errorFile(); while(!feof(file)) { fscanf(file, "%s\n", part[i].firstName); fscanf(file, "%s\n", part[i].lastName); fscanf(file, "%d", &part[i].numberPhone); fscanf(file, "%s\n", part[i].month); fscanf(file, "%d", &part[i].time); fscanf(file, "%d", &part[i].price); i++; } fclose(file); return (i - 1); } void sortFile() { struct Entrans tmp; FILE *file; int maxLengtStruct = readFile(), i, j; system("cls"); for(i = 0; i < maxLengtStruct; i++) for(j = 0; j < maxLengtStruct; j++) if(strcmp(part[i].lastName, part[j].lastName) < 0) { tmp = part[i]; part[i] = part[j]; part[j] = tmp; } if((file = fopen(baseFile, "w")) == NULL) errorFile(); for (i = 0; i < maxLengtStruct; i++) { fprintf(file, "%s\n", part[i].firstName); fprintf(file, "%s\n", part[i].lastName); fprintf(file, "%d\n", part[i].numberPhone); fprintf(file, "%s\n", part[i].month); fprintf(file, "%d\n", part[i].time); fprintf(file, "%d\n", part[i].price); } fclose(file); printTextFile(1); printf("Файл успiшно вiдсортований!\n"); system("pause"); } void sqlOne() { int maxLengtStruct = readFile(), i, k = 0; system("cls"); printf("Список абонентiв в яких час розмови > 10 год. за 1 мiсяць:\n"); printf("-------------------------------------\n"); for (i = 0; i < maxLengtStruct; i++) if (part[i].time > 600) printf("%d. %s %s\n", ++k, part[i].lastName, part[i].firstName); if (k <= 0) printf("Такi абоненти вiдсутнi!\n"); printf("-------------------------------------\n\n"); system("pause"); } void sqlTwo() { int maxLengtStruct = readFile(), i, k = 0; system("cls"); printf("Список абонентiв загальна вартiсть яких <= 30 грн. ща 1 мiсяць:\n"); printf("-------------------------------------\n"); for (i = 0; i < maxLengtStruct; i++) if (part[i].time * part[i].price <= 30) printf("%d. %s %s\n", ++k, part[i].lastName, part[i].firstName); if (k <= 0) printf("Такi абоненти вiдсутнi!\n"); printf("-------------------------------------\n\n"); system("pause"); } void sqlThree() { int maxLengtStruct = readFile(), i, j; struct Entrans tmp; system("cls"); printf("Список 5 номерiв телефонiв де час розмови найбiльший:\n"); printf("-------------------------------------\n"); for (i = 0; i < maxLengtStruct; i++) for (j = 0; j < maxLengtStruct - 1; j++) if (part[j].time < part[j + 1].time) { tmp = part[j]; part[j] = part[j + 1]; part[j + 1] = tmp; } for (i = 0; i < 5; i++) printf("%d. %d\n", i + 1, part[i].numberPhone); printf("-------------------------------------\n\n"); system("pause"); } void printMenu() { printf(" ................................................. \n"); printf(" : Меню : \n"); printf(" ................................................. \n"); printf(" : : \n"); printf(" : 1. Внести записи в файл : \n"); printf(" : 2. Вивести файл на екран : \n"); printf(" : 3. Вiдсортувати файл за алфавiтом : \n"); printf(" : 4. Видалити записи по номеру з файла : \n"); printf(" : 5. Вивести абонентiв в яких час р. > 10 год. : \n"); printf(" : 6. Вивести абонентiв в яких вартiсть <= 30 г. : \n"); printf(" : 7. Вивести 5 телефонiв де час р. найбiльший : \n"); printf(" : 0. Закрити програму : \n"); printf(" :...............................................: \n"); printf(" Ваш вибiр: "); } main() { int work = 1, choise; SetConsoleCP(1251); SetConsoleOutputCP(1251); while (work) { fflush(stdin); system("cls"); printMenu(); scanf("%d", &choise); system("cls"); switch (choise) { case 1: addTextFile(); break; case 2: printTextFile(0); break; case 3: sortFile(); break; case 4: deletePhone(); break; case 5: sqlOne(); break; case 6: sqlTwo(); break; case 7: sqlThree(); break; case 0: work = 0; break; default: printf("\aПомилкове введення! Спробуйте ще раз!\n"); system("pause"); break; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д