Некорректное отображение вывода структур - 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();
}