Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

컴파일러가 C 프로그래밍에서 정수 다음에 문자열을 읽지 않는 이유는 무엇입니까?

<시간/>

문제

컴파일러가 C 프로그래밍에서 정수 다음에 문자열을 읽지 않습니까? 이 문제를 어떻게 해결할 수 있습니까?

해결책

정수를 입력하고 Enter 키를 눌러 다음 값을 읽으면 컴파일러는 문자열의 첫 번째 문자에 null을 저장하고 문자열 입력이 종료됩니다. null 문자를 읽을 때마다 scanf가 종료되기 때문입니다.

해결 방법은 무엇입니까?

int나 float 다음에 문자열이나 문자를 읽으려고 할 때 입력 버퍼에 있는 임시 char를 읽어야 합니다.

다음은 오류가 없는 프로그램입니다 -

예시

#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;
}

출력

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