[완료] 문자열 복사 후 해당 문자열 뒤에 이상한 값이 추가로 붙습니다.

secretdog1의 이미지

소켓 서버 프로그래밍을 하고 있는 중인데 이상한 점이 생겨서 질문드립니다.

아래는 제가 따로 짜 본 문자열 추출 프로그램입니다.

#include <stdio.h>
#include <string.h>
 
#define BUF_SIZE 1024
 
int main(void) {
	char *recv_message = "GET /test.html HTTP/1.1\n";
	char request[BUF_SIZE];
	int i, len;
 
	for(i = 0; i < BUF_SIZE; i++) {
		if(recv_message[i + 4] == ' ') {
			break;
		}
		request[i] = recv_message[i + 4];
	}
 
	printf("%d : %s\n", (int) strlen(request), request);
 
	return 0;
}

여기서는 request 배열에 /test.html 이라는 10자리 문자열이 제대로 들어갑니다.
하지만 소켓 서버 프로그램에 저 프로그램을 넣으면 10자리 외에도 추가로 4 자리의 이상한 문자들이 들어갑니다.
/test.htmlq�6
이런 이상한 문자가 붙어서 나옵니다. 길이는 14자리로 나오구요.
무슨 문제가 있는건지 잘 모르겠습니다. 도와주세요..

----------

해결 완료

해결 방법 : request 문자열의 마지막에 0 을 붙인다.

익명 사용자의 이미지

request 마지막에 널 문자 붙여주는 코드를 빼먹으셨네요.

for 문 끝나고 request[i] = 0; 정도로 하시면 됩니다.

secretdog1의 이미지

헉 그런 간단한 실수를..ㅠㅠㅠ
정말 감사합니다!!!