Hỏi về lỗi 'gets' was not declared in this scope

Em đã khai báo thư viện stdio.h và dùng hàm gets() để nhập họ tên và msv từ bàn phím nhưng gặp phải lỗi này ạ
Code:

#include <iostream>
#include <stdio.h>

using namespace std;
struct sinhvien
{
    char ten[50];
    char msv[50];
};
int main()
{
    sinhvien x;
    cout<<"Nhap ten sinh vien: ";
    gets(x.ten);
    cout<<"Nhap ma sinh vien: ";
    gets(x.msv);
    cout<<"Xin chao "<<x.ten<<" co ma sinh vien "<<x.msv<<endl;
    return 0;
}

http://www.cplusplus.com/reference/cstdio/gets/

Nó có gợi ý dùng fgets() để thay thế đó.

4 Likes

Em đã thử cả fgets() và không được ạ

Dùng cin.getline nhé :smiley:

3 Likes


Vẫn lỗi ạ ?

Có có prototype đàng hoàng mà, sao bạn k chịu để ý nhỉ. :smile:

Nhập như bạn là thiếu mất một argument (số ký tự tối đa nhập vào) mất r. :laughing:
Có thể sửa như :point_down: chẳng hạn.

cin.getline(x.ten, sizeof(x.ten);

Chắc bạn lại dùng như thế này chứ nhỉ. :smile:

fgets(x.ten);

Prototype của fgets()
image

Vậy bạn thử :point_down:

fgets(x.ten, sizeof(x.ten), stdin);
2 Likes

Cảm ơn bác, em nhập được rồi. Mà cho em hỏi có cách nào dùng được gets() không ạ ? Tại trước em dùng vẫn được mà giờ lại lỗi. Hay là do ide ạ ?

Do IDE thì chưa đúng, mà là do Compiler á.

Nếu bạn vẫn muốn dùng gets() thì xài C99 chắc vẫn còn, mà nó khuyên k dùng rồi thì bạn cứ cố làm gì. (Đến mức xóa cả đi) :sweat_smile:

3 Likes

Hehe, cảm ơn bạn nha <(")

1 Like

gets() không kiểm soát được số kí tự nhập vào nên sẽ làm hỏng chương trình.

4 Likes

hình như có chú ý khi sử dụng gets trên linux đó bạn.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?