c언어 파일에서 읽어오는거에 대한 질문

조회수 570회
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
char home[100][100] = { 0, };
int main(void)
{
    FILE* fp = NULL;
    int n = 0;  // number of test cases
    int row = 0;    // number of rows
    int col = 0;    // number of cols
    int result = 0; // number of error
    char i = 0;
    char j = 0;

    if ((fp = fopen("sample_input.txt", "r")) == NULL)
    {
        fprintf(stderr, "No file exist!\n");
        return -1;
    }
    fscanf_s(fp, "%d", &n);
    printf("문제수 : %d\n", n);
    while (n-- > 0)
    {
        fscanf_s(fp, "%d", &row);
        printf("row = %d\n", row); //행 출력
        fscanf_s(fp, "%d", &col);
        printf("col = %d\n", col); //열 출력

        fgetc(fp);
            for (i; i < row ; i++)
            {
                for (j; j < col ; j++)
                {

                    fscanf_s(fp, "%c", &home[j][i]);

                    printf("%c", home[j][i]);
                }
            }
        //printf("\n");

    //printf("%d 번째 H의 갯수는 : %d\n",n, result);


    }

    fclose(fp);
    return 0;
}

이 코드가 이 텍스트 파일에서 읽는 코드인데

2
3
2
XH
XA
HX
5
5
XXHXH
HHAHH
XHHHC
HBHHH
XHHXH

문제수 : 2
row : 3
col : 2
XHrow:3
col : 2

이렇게 출력이 됩니다. 저는

문제수 2
row : 3
col : 2
XH
XA
HX

까지 출력하고 H의 갯수를 센 다음 다음

row : 5
col : 5
HHAHH
XHHHC
HBHHH
XHHXH

를 출력하고 H의 갯수를 세고 싶습니다. 어떻게 해야될까요?

1 답변

  • 아래 코드 참고하세요.

    • 코드
    #define _CRT_SECURE_NO_WARNINGS
    
    #include <stdio.h>
    
    int main()
    {
        char home[100][100] = { 0, };
        FILE* fp = NULL;
        int n = 0;  // number of test cases
        int row = 0;    // number of rows
        int col = 0;    // number of cols
        int result = 0; // number of error
    
        if ((fp = fopen("sample_input.txt", "r")) == NULL)
        {
            fprintf(stderr, "No file exist!\n");
            return -1;
        }
    
        fscanf(fp, "%d", &n);
        printf("문제수: %d\n\n", n);
    
        for (int num = 1; num <= n; ++num)
        {
            result = 0;
            fscanf(fp, "%d", &row);
            printf("row: %d\n", row); //행 출력
            fscanf(fp, "%d", &col);
            printf("col: %d\n", col); //열 출력
    
            for (int i = 0; i < row; ++i)
            {
                for (int j = 0; j < col; ++j)
                {
                    fscanf(fp, " %c", &home[i][j]);
                    printf("%c", home[i][j]);
                    if (home[i][j] == 'H')
                        ++result;
                }
                printf("\n");
            }
            printf("%d번째 H의 갯수: %d\n\n", num, result);
        }
    
        fclose(fp);
        return 0;
    }
    
    • 결과

    이미지

    • 텍스트 파일

    이미지

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

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

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

(ಠ_ಠ)
(ಠ‿ಠ)