01/10/2018, 00:23
Thay gets_s bằng gets thì dev c++ chạy được còn để nguyên gets_s chạy trong visual thì lại bị lỗi?
Code này của em thay gets_s bằng gets thì dev c++ chạy dc còn để nguyên gets_s chạy trong visua thì lại bị lỗi. Ai giải thích cho em với!
#include<iostream>
#include<stdio.h>
#include<conio.h>
using namespace std;
struct NGAYTHANG
{
int ngay;
int thang;
int nam;
} ngaysinh;
struct HOCSINH
{
char ten[30];
NGAYTHANG ngaysinh;
char gioitinh[4];
char hokhau[20];
float diemTB;
}hocsinh[50];
void nhap(HOCSINH hocsinh[], int &n)
{
do
{
cout << "nhap n: ";
cin >> n;
} while (n <= 0);
for (int i = 0; i < n; i++)
{
cout << "hocsinh" << i << "]
";
cout << "ho ten: ";
fflush(stdin);
gets_s (hocsinh[i].ten);
cout << "ngay sinh:";
cin >> hocsinh[i].ngaysinh.ngay; cout << "/";
cin >> hocsinh[i].ngaysinh.thang; cout << "/";
cin >> hocsinh[i].ngaysinh.nam;
cout << "gioi tinh:";
fflush(stdin);
gets_s(hocsinh[i].gioitinh);
cout << "ho khau:";
fflush(stdin);
gets_s(hocsinh[i].hokhau);
cout << "diem tb:";
cin >> hocsinh[i].diemTB;
}
}
void xoa(int a[], int &n)
{
int j, d;
for (int i = 0; i<n - 1; i++)
{
j = i + 1; d = j;
while (a[j] != a[i] && j<n)
{
j++; d++;
}
for (j = d; j<n; j++)
if (a[j] != a[i])
{
a[d] = a[j]; d++;
}
n = d;
}
}
void xuat(HOCSINH hocsinh[], int n)
{
for (int i = 0; i < n; i++)
{
cout << hocsinh[i].ten << endl;
cout << hocsinh[i].ngaysinh.ngay << "/";
cout << hocsinh[i].ngaysinh.thang << "/";
cout << hocsinh[i].ngaysinh.nam<<endl ;
cout << hocsinh[i].gioitinh<<endl;
cout << hocsinh[i].hokhau << endl;
cout << hocsinh[i].diemTB << endl;
}
}
int main()
{
int n;
nhap(hocsinh, n);
//xoa(A, n);
xuat(hocsinh, n);
_getch();
return 0;
}
Bài liên quan
Đơn giản có thể là do visual không hỗ trợ thôi. Trình biên dịch là khác nhau !
Em có thể thay
get_s
bằng hàmfgets
trong visual.Hoặc là chuyển thay char bằng string.
Cách sử dụng hàm fgets()
Cách Học – 2 Jun 13
[C/C++]get() and fget() in C/C++ - Cảnh báo khi dùng gets() - Warning when use...
Thông thường để nhập một biến ta dùng hàm scanf(), hàm này cũng dùng để nhập 1 xâu ký tự tuy nhiên khi gặp các dấu trắng (dấu cách, enter,…) thì không đọc nữa và chuỗi bị cắt từ đó, VD nhập “nguyen van quan” thì ta chỉ nhận được “nguyen”. Cách khắc...
Hàm gets_s nhận vào hai tham số đó là: chuỗi ký tự và số lượng ký tự đc nhập
bạn có thể tra trong thư viện #include <stdio.h> CTRL + F(trong VS) -> search với từ khóa: ges_s là ra thôi !