문제
컴파일러가 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