2013-03-08 1 views
1

스택 오버플로에 대해 너무 기본적인 질문이 아니길 바랍니다. 하지만 배열의 성적을 결정하려고하는 쿼리가 있으며 각 성적에 대한 사용자 입력을 요청합니다. 그것은 다음과 같습니다 C - 배열이 관련된 경우 Printf 중복

#include <stdio.h> 


int main (void) 
{ 
int size; 

printf ("Enter The Amount Of Grades In Your Array: "); 
scanf("%i", &size);/*Stores Amount Of Grades In The Array*/ 

char myGrades[size]; 
int i; 

for (i = 0; i < size; ++i) 
    { 
    printf ("Enter the grade:"); 
    scanf ("%c",&myGrades[i]); 
    } 

return 0; 
} 

나는 내가 "Enter The Grade:"을 읽을 INT 후 첫 선을 기대하는 대신 그것을 먼저 요청하지 않고 등급을 두 번째 시간을 입력 말한다 왜 이해가 안

"Enter The Grade:""Enter The Grade:"처럼 보인다 첫 번째 "입력 학년"에 대한 내 입력하십시오. 어떤 제안이라도 대단히 감사 할 것입니다!

+0

문제와 관련이 없지만 '크기'가 적절한 값을 유지하는지 확인해야합니다. 사용자가 큰 번호를 입력하면 프로그램이 중단됩니다. – teppic

답변

5

첫 번째 scanf\n 뒤에 있으며, 다음에 Enter 키를 누를 때 자동으로 다시 읽습니다 (따라서 줄 바꿈이 배열에 저장됩니다). 대신 " %c"을 사용하여이 문제를 해결할 수 있습니다. 이 공간은 원하는 문자 앞에 줄 바꿈 또는 공백을 제거합니다.