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

Tại sao trình biên dịch không đọc chuỗi sau số nguyên trong lập trình C?

Vấn đề

Trình biên dịch không đọc chuỗi sau số nguyên trong lập trình C? Làm thế nào chúng ta có thể giải quyết vấn đề này?

Giải pháp

Khi bạn nhập một số nguyên và nhấn enter để đọc giá trị tiếp theo, trình biên dịch sẽ lưu trữ null vào ký tự đầu tiên của chuỗi và kết thúc đầu vào chuỗi. Bởi vì scanf sẽ kết thúc bất cứ khi nào nó đọc một ký tự rỗng.

Làm thế nào để giải quyết nó?

Khi chúng ta cố gắng đọc chuỗi hoặc ký tự sau int hoặc float, chúng ta nên đọc một ký tự tạm thời có trong bộ đệm đầu vào.

Sau đây là chương trình không có lỗi -

Ví dụ

#include <stdio.h>
struct student{
   char name[10];
   int roll;
   char temp;
} s;
int main(){
   printf("Enter information of students:\n");
   printf("\nEnter roll number: ");
   scanf("%d", &s.roll);
   scanf("%c",&s.temp); //read temporary character
   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

Enter information of students:
Enter roll number: 3
Enter name: tutorialspoint
Displaying Information of students:
Roll number: 29806
name:tutorialspoint