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;
 
        }
    }
}

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


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

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

15   голосов , оценка 3.733 из 5