Computer >> Máy Tính >  >> Lập trình >> lập trình C

Lỗi phổ biến xảy ra khi sử dụng câu lệnh scanf () trong ngôn ngữ C là gì?

Vấn đề

Đã xảy ra lỗi phổ biến khi đọc dữ liệu chuỗi và số bằng hàm scanf () trong ngôn ngữ C

Giải pháp

Hàm scanf () được sử dụng để đọc đầu vào được định dạng từ stdin bằng ngôn ngữ C. Nó trả về toàn bộ số ký tự được viết trong đó, ngược lại, trả về một giá trị âm.

Nói chung trong trường hợp hàm scanf () trong khi đọc các giá trị chuỗi sau số nguyên từ người dùng, chúng tôi thường xuyên gặp lỗi.

Ví dụ

Sau đây là một chương trình C đọc số cuộn (giá trị nguyên) và tên của một học sinh -

#include <stdio.h>
struct student {
   char name[10];
   int roll;
} s;
int main(){
   printf("Enter information of students:\n");
   printf("\nEnter roll number: ");
   scanf("%d", &s.roll);
   printf("\nEnter name: ");
   gets(s.name);
   printf("\nDisplaying Information of students:\n");
   printf("\nRoll number: %d\t", s.roll);
   printf("\nname:%s\t", s.name);
   return 0;
}

Đầu ra

Trong ví dụ trên, cuộn không:đã được trình biên dịch đọc, Sau đó trình biên dịch không thể đọc tên và chuyển sang câu lệnh tiếp theo là printf ("Số cuộn là:% d \ t, s.roll);

and the output is "Roll number: 3
name: "

Đây là lỗi phổ biến xảy ra khi đọc dữ liệu chuỗi và số bằng hàm scanf () trong ngôn ngữ C.

Enter information of students:
Enter roll number: 3
Enter name: //error
Displaying Information of students:
Roll number: 3
name: //error