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' 을 삽입하셔서 끝맺음을 하셨는지도 확인할 필요가 있어보입니다.
댓글 입력