01/10/2018, 10:35
Hỏi về hàm fflush(stdin) trong C
Tình hình là mình viết code mà đến chỗ nhập chuỗi thứ nhất tự nhiên nó bỏ qua luôn, mình dùng 1 cái hàm fflush(stdin) nhưng nó vẫn bị, mình dùng 2 cái fflush nó vẫn bị, mọi người giúp mình cái, mình bó tay rồi, cảm ơn mọi người.
// ConsoleApplication2.cpp : Defines the entry point for the console application.
//
#include "stdio.h"
#include "string.h"
#define SI_SO_MAX 50
#define HO_TEN_MAX 30
int main()
{
char ds[SI_SO_MAX][HO_TEN_MAX];
char *p[SI_SO_MAX];
char *tmp;
int i, j, n;
do {
printf("Nhap si so lop: ");
scanf("%d", &n);
fflush(stdin);
fflush(stdin);
} while (n<1 || n>SI_SO_MAX);
for (i = 0; i < n; i++)
{
printf("Hoc vien thu %d", i);
gets_s(ds[i]);
p[i] = ds[i];
}
for (i = 0; i < n - 1; i++)
{
for (j = i + i; j < n; j++)
{
if (strcmp(p[i], p[j]) > 0)
{
tmp = p[i];
p[i] = p[j];
p[j] = tmp;
}
}
}
printf("Danh sach lop sau khi sap xep:
");
for (i = 0; i < n; i++)
{
printf("s
", p[i]);
}
printf("
");
getchar();
return 0;
}
Bài liên quan
Đừng dùng
fflush
. Nó không ảnh hưởng tớiinput
đâu.Thay thế bằng
getchar
hay cái gì khác đimình chịu getchar thì nó báo lỗi.
Tại vì bạn chưa khai báo thu viện.
nó vẫn báo lỗi nè
Ý mình là dùng
getchar
để lấy cái\n
đi sau khiscanf
. Chỉ đơn giản làgetchar();
tks bạn nha, mình đang cài lai VS 2013 , bản 2017 nhiều cái thay đổi quá.
Hình như bản nào cũng vậy. Nhưng mà ai đời lại cài cái bản cũ code theo phong cách cũ chứ.
tại vì mình đang học C/C++ ở trên trường cũng như trung tâm người ta đều dùng bản cũ, mình sợ chưa đủ trình độ mà dùng bản mới này sợ lạc đường
Cứ theo nơi mình học họ cài thế nào mình cài như vậy.
Bản 2013 khá ổn định với update 5
mình cũng dùng bản 2013 1 thời gian, vẫn dùng bình thường, tự nhiên qua 2017 nó bị lỗi đủ thứ.
cho mình xin cai link tải bản 2013 trên microsoft được không, mình tìm toàn thấy 17 với 15, cảm ơn bạn
Đây bạn:
https://www.visualstudio.com/vs/older-downloads/
cảm ơn bạn đã giúp đỡ