Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Lỗi thường gặp khi dùng scanf() trong C


Vấn đề

Lỗi thường gặp khi đọc chuỗi và số bằng scanf() trong C.

Giải pháp

Hàm scanf() đọc đầu vào định dạng từ stdin. Trả về số ký tự đọc được, âm nếu lỗi.

Thường gặp lỗi khi đọc chuỗi sau số nguyên từ người dùng.

Ví dụ

Chương trình C đọc mã số (số nguyên) và tên sinh viên:

#include <stdio.h>
struct student {
    char name[10];
    int roll;
} s;
int main() {
    printf("Nhap thong tin sinh vien:\n");
    printf("\nNhap ma so: ");
    scanf("%d", &s.roll);
    printf("\nNhap ten: ");
    gets(s.name);
    printf("\nHien thi thong tin sinh vien:\n");
    printf("\nMa so: %d\t", s.roll);
    printf("\nTen: %s\t", s.name);
    return 0;
}

Kết quả

Trong ví dụ, mã số được đọc, sau đó trình biên dịch không đọc được tên và nhảy sang câu lệnh printf tiếp theo.

và đầu ra là "Ma so: 3 ten: "

Đây là lỗi thường gặp khi đọc chuỗi và số bằng scanf().

Nhap thong tin sinh vien:
Nhap ma so: 3
Nhap ten: // lỗi
Hien thi thong tin sinh vien:
Ma so: 3
ten: // lỗi