#include

#include

#include

#include

#include

#include


using namespace std;


vector A;

vector B;


int main(){

    int x,y;

    std::cin >> x >> y;

    for (size_t i = 0; i < x; i++) {

        char A_List[500] = {

            0,

        };

        cin.getline(A_List, 500);


        char *token = strtok(A_List, " ");

        while (token != NULL) {

            A.push_back(atoi(token));

            token = strtok(NULL, " ");

        }

    }


    for (size_t j = 0; j < x; j++) {

        char B_List[500] = {

            0,

        };

        cin.getline(B_List, 500);


        char *token1 = strtok(B_List, " ");

        while (token1 != NULL) {

            B.push_back(atoi(token1));

            token1 = strtok(NULL, " ");

        }

    }


    for (size_t i = 0; i < x; i++) {

        for (size_t j = 0; j < y; j++) {

            std::cout << A[i*y + j] + B[i*y + j] << " ";

        }

        std::cout << '\n';

    }


}


전체 코드입니다.


잘 돌아가긴 합니다. 근데 문제는 


for (size_t i = 0; i < x; i++) {

        char A_List[500] = {

            0,

        };

        cin.getline(A_List, 500);


        char *token = strtok(A_List, " ");

        while (token != NULL) {

            A.push_back(atoi(token));

            token = strtok(NULL, " ");

        }

    }


이거 여러가지 시도로 디버깅 해본 결과 i가 0일 때 getline이 동작하지를 않습니다. 근데 이게 이해가 안갑니다. 왜죠?


심지어는 더 웃긴건


for (size_t j = 0; j < x; j++) {

        char B_List[500] = {

            0,

        };

        cin.getline(B_List, 500);


        char *token1 = strtok(B_List, " ");

        while (token1 != NULL) {

            B.push_back(atoi(token1));

            token1 = strtok(NULL, " ");

        }

    }

위에거 복붙해서 A만 B로 token만 token1로 고쳐쓴 이건 또 j든 i든 0일 때 getline이 작동합니다.


도대체가.... 뭔일이 일어나고 있는건지 이해가 안갑니다? 도대체 뭔..... 뭐죠 이게?


다시 말하지만 코드는 문제 없이 돌아갑니다. 다 제대로 작동하고요. 근데 위 for문과 아래 for문이 아예 구조가 똑같은데 하나는 0에 작동을 하고 하나는 0에 작동을 안하는 기묘한 현상이 일어나서.....