[C] strcat(), strnset() 함수 사용시 문제...??????

0huni의 이미지

char * packet;
char code[4+1]; // code = "A101"
char host[2+1]; // host="HT"

packet= (char *)malloc(sizeof(char) * 250);

strcpy(packet, code);
strcat(packet, strnset(packet+4, ' ', 36));
strcat(this->m_psErrorPacket, host);

의도는 packet 변수에 code 4자리를 넣고 그 뒤에 36자리의 스페이스를 채우고
다시 "HT" 값을 붙이고 싶습니다.

그런데 왜 packet에 "A101HT" 이런식으로 붙어서 나오는걸까요...?

250byte짜리의 변수에 중간중간에 스페이스를 넣고 싶습니다.

다른 좋은 방법이라도 있으면 부탁드립니다.

답변 좀 부탁드립니다.

세벌의 이미지

strcat(packet, strnset(packet+4, ' ', 36));

대신
memset(packet+4, ' ', 36);

을 써보세요. strnset이 무슨 함수인지 몰라서 제가 아는 memset을 썼습니다. 테스트는 안 해봤습니다 :wink: