c언어 문자열 초기화 후 나머지 와 파일입출력시 tap

조회수 607회

문자열을 '\0'으로 초기화를 모두 마친 후에 문자열을 받아서 비교해보니 받은 문자열 끝에 '\0'이 나타나고 그 뒤에 의미없는 문자들이 있는데 이런 것들에 의미가 있을까요? 지금 하는 작업은 문자열을 비교하려는 작업입니다. 또 파일입출력에서 문자열을 읽어왔는데 여기서는 문자열에서 의미있는 부분 다음에 tap이 나오고 그 다음에 의미없는 문자들이 나옵니다. 이런 차이가 왜 발생하는 지 궁금합니다. 둘의 문자열을 strcmp를 통해 비교하려는데 원하는 결과가 나오지 않아 질문합니다.

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

1 답변

  • $ cat main.c
    #include <stdio.h>
    #include <string.h>
    
    int main(int argc, char* argv[])
    {
        char str1[128];
        char str2[128];
    
        str1[0] = '\0';
        str2[0] = '\0';
        printf("[%s]\n", str1);
        printf("[%d]\n", strcmp(str1, str2));
    
        return 0;
    }
    $ gcc main.c
    $ ./a.out
    []
    [0]
    
    

    질문의 요지가 이해가 잘 안됩니다. 위와같이 하면 잘 동작합니다. 초기화를 아래와 같이 할 수도 있습니다.

    char str[128] = {0,};

    strcmp의 사용법도 명확하게 이해한건지 확인해야겠구요. 어디서 받아온다니 받아올때 길이+1에 '\0' 을 삽입하셔서 끝맺음을 하셨는지도 확인할 필요가 있어보입니다.

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

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

(ಠ_ಠ)
(ಠ‿ಠ)