Перевод вводимого числа из char в int - C (СИ)

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

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

Помогите пожалуйста. Вообщем все работает нормально кроме int main(). выбираю пункт один и вылетает ошибка. Необходимо сделать без перевода вводимого в меню числа из char в int.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

FILE*base;
int poz=0;
const int max=100;
 
struct peoples                          /* Описание струкутуры БД */
{
    char name [30];
    int age;
    int oklad;
};
struct peoples *peoples_data_base[max]; /* Массив структур */
 
void data_base()                        /*инициализация структуры*/
{
    for(int t = 0; t < max; t++)
        peoples_data_base[t] = (peoples*)malloc(sizeof(struct peoples));//выделяешь память
 }
 
void add(void)                          /*Ввод записи в БД*/
{
    
    printf("Enter the employee's last name: ");
    scanf("%s", peoples_data_base[poz]->name);
        fflush(stdin);
    printf("Enter the age of the employee: ");
    scanf("%d", &peoples_data_base[poz]->age);
        fflush(stdin);
    printf("Enter the salary of the employee: ");
    scanf("%d", &peoples_data_base[poz]->oklad);
        fflush(stdin);              //очищаешь входной поток
    printf("\n\n");
    poz++;
}
 
void del(void)                           /*Удаление записи в БД*/
{
    int k;
    printf("Enter the number you want to deleted: \n -> ");
    scanf("%d", &k);
    if(k >= 0 && k < poz)
        free(peoples_data_base[k]);
    for (int i=k;i<poz-1;i++)
        peoples_data_base[i]=peoples_data_base[i+1];//смещение базы после удаления, чтобы не было дыр
    free(peoples_data_base[poz]);
    poz--;
    printf("Record deleted successfully! \n\n");
}
 
void list(void)                         /*Вывод БД*/
{
    
    register int i;
 
    for(i = 0; i < poz; i++)
    {
        if (peoples_data_base[i]->name[0]) 
        {
            printf("ID %d\n", i+1);
            printf("Name of staff -> %s\n", peoples_data_base[i]->name);
            printf("The age of the employee -> %d\n", peoples_data_base[i]->age);
            printf("Salary of the employee -> %d\n", peoples_data_base[i]->oklad);
        
        }
 
    }
    printf("\n\n");
}
 
void save(void)                          /*Сохранение в файл БД*/
{
    FILE *base;
    if((base = fopen("data.txt","w"))==NULL) //проверка на то, есть ли что писать в файл
    {
        printf("ERROR!!!\n");
        return;
    }
    register int i;
    for(i = 0; i < poz; i++)
    {
            fprintf(base, "%s %d %d",
                peoples_data_base[i]->name, 
                peoples_data_base[i]->age, 
                peoples_data_base[i]->oklad);
    } 
    printf("\n\n");
    fclose(base);
}
 
void load(void)                          /*Загрузка из файла БД */
{
    FILE *base;
    poz = 0;
    if((base = fopen("data.txt","r"))==NULL)//проверка на то есть ли что загружать
    {
        printf("Data Base not found!!!\n");
        return;
    }
    while(!feof(base) && poz < 100) //загружаешь пока файл не кончится и пока записей не станет 100. чтобы не больше
    {
        fscanf(base, "%s%d%d", 
            peoples_data_base[poz]->name,
            &peoples_data_base[poz]->age, 
            &peoples_data_base[poz]->oklad);
        poz++;
    }
    fclose(base);
}
 
void sort(void)                          /* Сортировка */
{
    struct peoples *sp;
    int i =0, j = 0;
    for( i = 0; i < poz; i++ )//пузырьковая сортировка, первый элемент сравнивается последовательно с каждым. затем второй и т.д.
    {
        for( j = i+1; j<poz; j++ )
        {
            if(peoples_data_base[i]->oklad>peoples_data_base[j]->oklad)
            {
                sp = peoples_data_base[i];
                peoples_data_base[i] = peoples_data_base[j];
                peoples_data_base[j] = sp;
            }
        }
    }
}
 
int main()                    /*получение значения из меню*/
{
char c;
{
    printf("\n");
    printf("\n1. Enter the record in the database.\n");
    printf("2. Remove the record from the database.\n");
    printf("3. Display data from the database.\n");
    printf("4. Sort records in a database.\n");
    printf("5. Save the data to a file. \n");
    printf("6. Load data from a file.\n");
    printf("7. !!!Exit!!!\n");
    printf("\n You have chosen:  ");
}
    while (c = getchar())
 
    {
    switch(c)
        {
            case '1': add(); break;   /* Добвление записи */
            case '2': del(); break;   /* Удаление записи */  
            case '3': list(); break;  /* Вывод БД  */
            case '4': sort(); break;  /* Сортировка */
            case '5': save(); break;  /* Сохранение БД в файл */
            case '6': load(); break;  /* Загрузить данные */
            case '7': exit(0); break; /* Выход из программы */
            break;
        }
    
    }
    return 0;
}

Решение задачи: «Перевод вводимого числа из char в int»

textual
Листинг программы
int main()                    /*получение значения из меню*/
{
char c;
[S]{[/S]
    printf("\n");
    printf("\n1. Enter the record in the database.\n");
    printf("2. Remove the record from the database.\n");
    printf("3. Display data from the database.\n");
    printf("4. Sort records in a database.\n");
    printf("5. Save the data to a file. \n");
    printf("6. Load data from a file.\n");
    printf("7. !!!Exit!!!\n");
    printf("\n You have chosen:  ");
[S]}[/S]
    while (c = getchar())
 
    [S]{[/S]
    switch(c)
        {
            case '1': add(); break;   /* Добвление записи */
            case '2': del(); break;   /* Удаление записи */  
            case '3': list(); break;  /* Вывод БД  */
            case '4': sort(); break;  /* Сортировка */
            case '5': save(); break;  /* Сохранение БД в файл */
            case '6': load(); break;  /* Загрузить данные */
            case '7': exit(0); break; /* Выход из программы */
            break;
        }
    
    [S]}[/S]
    return 0;
}

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

  1. Переменная c типа char используется для получения ввода пользователя.
  2. Ввод пользователем числа от 1 до 7.
  3. В зависимости от ввода пользователя выполняется соответствующая функция:
    • add() - добавление записи в базу данных.
    • del() - удаление записи из базы данных.
    • list() - вывод содержимого базы данных.
    • sort() - сортировка записей в базе данных.
    • save() - сохранение базы данных в файл.
    • load() - загрузка данных из файла в базу данных.
    • exit(0) - выход из программы.

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


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

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

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