01/10/2018, 15:51

Tại sao em nhập y để tiếp tục mà lại bị thoát chương trình vậy?

#include <stdio.h>
#include <conio.h>




int main()
{
	char x;
	int number;
	int tong = 0;
	do {
		printf("
nhap so number:  ");
		scanf_s("%d", &number);		
		tong = tong + number;
		fflush(stdin);
		printf("
ban co muon nhap tiep (y/n)?:   ");
		scanf_s("%c", &x);
	} while (x == 'y');
		

	_getch();
	return 0;

em đã xóa bộ nhớ đệm rồi mà Tại sao em nhập y để tiếp tục mà lại bị thoát chuong trình vậy

Lam Pham viết 18:06 ngày 01/10/2018

Nếu dùng scanf_s thì em phải dùng thế này chứ nhỉ?

char c;
scanf_s("%c", &c, 1);
Huỳnh Việt Dương viết 17:53 ngày 01/10/2018

da.thank anh nhe. em tìm ra lỗi rồi.Do em đàng sai VS 2015 nó không còn sử dung fflush(stdin) nữa mà phải dung rewind(stdin) mới đc

rogp10 viết 18:00 ngày 01/10/2018

rewind(stdin) cũng là VS only thôi.
Vì sao fflush(stdin) là sai:

Thực sự thì fflush không có nghĩa gì cả trong các luồng đọc như stdin, flush nghĩa là ghi từ buffer xuống đĩa, nên sau này trừ mỗi MS (VS) thì không ai hỗ trợ fflush(stdin). Vả lại stdin không phải chỉ có người nhập, mà còn có thể là do dẫn từ file vào nữa, nên xóa đi là sai. ostream points to an output stream or an update stream in which the most recent operation was not input, the fflush function causes any unwritten data for that stream to be delivered to the host environment to be writte…

Bài liên quan
0