Некорректное отображение вывода структур - C (СИ)

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

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

Проблема в выводе записанной структуры. В приложенном скрине показано, чем заполняются поля. Помогите решить проблему.
#include <stdio.h> 
#include <stdlib.h> 
#include <locale.h> 
#include <conio.h>
#include <malloc.h>
struct book
{
 char title [15];
 char author [15];
 int value;
}books[1];
int proba() {
  struct book *lib;
  int i;
  system("chcp 1251");
  system("cls");
  lib = (struct book*)malloc(sizeof(struct book));
 
    printf("Введите название  книги:");
    scanf("%s", &lib->title);
    printf("Введите автора  книги: ");
    scanf("%s", &lib->author);
    printf("Введите цену  книги: ");
    scanf("%d",&lib->value);
    getchar();
 
    printf("\n \n \n \n");
    printf("=============\n");
    printf("Автор: %s \n", lib->author);
    printf("Название: %s \n" , lib->title);
    printf("Цена: %d\n", lib->value);
  system("pause");
  return 0;
}
 
void ukazateli() { 
int i; 
 
struct book *lib;
lib = (struct book*)malloc(sizeof(struct book));
printf("<============================>\n");
printf("Название:  %s\n",lib->title); 
printf("Автор: %s\n",lib->author); 
printf("Цена:  %d\n",lib->value); 
printf("<============================>\n");
free(lib);
}
 
int main()
{
int s;   
    setlocale(LC_ALL, "Russian");
    
    do{
    printf("1)Запись\n");
    printf("2)Вывод \n");
    printf("3)Выход \n");
    scanf("%d", &s);
    if (s==3) break; 
switch(s) { 
case 1: proba();
break;
case 2: ukazateli();
break;
}
}
 
while(s>0); 
 
system ("pause"); 
return 0;
}

Решение задачи: «Некорректное отображение вывода структур»

textual
Листинг программы
#include <stdio.h> 
#include <stdlib.h> 
#include <locale.h> 
#include <conio.h>
#include <malloc.h>
struct book
{
    char title[15];
    char author[15];
    int value;
};
 
void ukazateli(book *lib);
void proba(book *lib);
 
int main()
{
    struct book *lib = (struct book*)malloc(sizeof(struct book));
    int s;
    setlocale(LC_ALL, "Russian");
 
    do {
        printf("1)Запись\n");
        printf("2)Вывод \n");
        printf("3)Выход \n");
        scanf("%d", &s);
        if (s == 3) break;
        switch (s) {
        case 1: proba(lib);
            break;
        case 2: ukazateli(lib);
            break;
        }
    }
 
    while (s>0);
 
    system("pause");
    return 0;
}
 
void ukazateli(book *lib)
{
    printf("<============================>\n");
    printf("Название:  %s\n", lib->title);
    printf("Автор: %s\n", lib->author);
    printf("Цена:  %d\n", lib->value);
    printf("<============================>\n");
}
 
void proba(book *lib)
{
    printf("Введите название  книги:");
    scanf("%s", &lib->title);
    printf("Введите автора  книги: ");
    scanf("%s", &lib->author);
    printf("Введите цену  книги: ");
    scanf("%d", &lib->value);
    getchar();
 
    printf("\n \n \n \n");
    printf("=============\n");
    printf("Автор: %s \n", lib->author);
    printf("Название: %s \n", lib->title);
    printf("Цена: %d\n", lib->value);
    getchar();
}

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


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

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

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