30/09/2018, 19:43

Lỗi với câu lệnh fflush(stdin)?

Mọi người cho em hỏi câu lệnh fflush(stdin) của em bị lỗi gì mà sao em không nhập được tên sách, chỉ nhập được ID với tác giả thôi. Nó ra như thế này ạ:
Nhap ID: 1
Nhap ten sach: Nhap vao tac gia sach:
`#include “stdafx.h”
#include <stdio.h>
#include <tchar.h>
#include <conio.h>

struct SACH
{
int ID;
char BookName[50];
char Author[20];
};

void Nhap(SACH &);
void Xuat(SACH);
SACH* NhapMangSach(int*);
void Xuat(SACH[], int);

int main()
{
int n;
SACH*s = NhapMangSach(&n);
Xuat(s, n);
return 0;
}

void Nhap(SACH &s)
{
printf(“Nhap vao ID sach: “);
scanf_s(”%d”, &s.ID);

fflush(stdin);
printf("Nhap vao ten sach: ");
gets_s(s.BookName);

fflush(stdin);
printf("Nhap vao tac gia sach: ");
gets_s(s.Author);

}

void Xuat(SACH s)
{
printf(" ");
printf(“ID: %d”, s.ID);
printf(" ");
printf(“BookName: %s”, s.BookName);
printf(" ");
printf(“Author: %s”, s.Author);
}

SACH * NhapMangSach(int *n)
{
SACH *a = NULL;
int m;
printf(“Nhap vao so sach: “);
scanf_s(”%d”, &m);
if (m <= 0)
return NULL;
*n = m;
a = new SACH[m];
if (a != NULL)
for (int i = 0; i < m; i++)
Nhap(a[i]);
return a;
}

void Xuat(SACH s[], int n)
{
for (int i = 0; i < n; i++)
Xuat(s[i]);
}
`

Pham Van Hai viết 21:57 ngày 30/09/2018
fflush ko dùng cho stdin mà dùng cho stdout nếu dùng cho stdin nó sẽ gây undefined behavior. Còn vì sao thì ở đây có nói: or http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer=1052863818&id=1043284351 -> nên dùng cin.ignore() cho chắc
Bài liên quan
0