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