C언어 array 질문드립니다.

조회수 358회

안녕하세요. 이제 막 C언어를 공부하기 시작한 초보입니다.

교과서 예제를 풀다가 이해가 되지 않는 부분이 있어 질문드립니다.

아래의 코드는 배열을 이용해 시험성적을 처리하는 프로그램입니다.


#define STUDENTS 3
#define ITEMS 25

main()
{
    char key[ITEMS + 1], response[ITEMS + 1];
    int count, i, student, n, correct[ITEMS + 1];

    //READING OF CORRECT ANSWER//
    printf("Input key to the items\n"); 
    for (i = 0; i < ITEMS; i++)
        scanf_s("%c", &key[i]); 
    scanf_s("%c", &key[i]);
    key[i] = '\0';

    //Evaluation Begins//
    for (student = 1; student <= STUDENTS; student++)
    {

        count = 0;
        printf("\n");
        printf("Input responses of student - %d\n", student); 
        for (i = 0; i < ITEMS; i++)
            scanf_s("%c", &response[i]);
        scanf_s("%c", &response[i]);
        response[i] = '\0';

        for (i = 0; i < ITEMS; i++)
            correct[i] = 0;
        for (i = 0; i < ITEMS; i++)
            if (response[i] == key[i])
            {
                count = count + 1;
                correct[i] = 1;
            }
        //PRINTING RESULT//
        printf("\n");
        printf("Student - %d\n", student);
        printf("Score is %d out of %d\n\n", count, ITEMS);
        printf("Response to the item below are wrong : \n");
        n = 0;
        for (i = 0; i < ITEMS; i++)
            if (correct[i] == 0)
            {
                printf("%d", i + 1);
                n = n + 1;

            }
        if (n == 0)
            printf("NIL\n");
        printf("\n");
    }//GO TO NEXT STUDENT//

}

위의 코드에서

  1. //READING OF CORRECT ANSWER//

printf("Input key to the items\n");

for (i = 0; i < ITEMS; i++)

scanf_s("%c", &key[i]);

scanf_s("%c", &key[i]); <- 왜 for 반복문에서 scanf_s를 하고 빠져나와서 다시 scanf_s를 하는지,

key[i] = '\0'; <-이 부분은 초기화 과정인가요? 이 부분이 왜 필요한지 잘 모르겠습니다.

감사합니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)