저는 C 언어를 천천히하지만 확실하게 배우고 있으며, 나는 이러한 결과물에 대해 혼란스러워합니다.문자 배열 조작
#include <stdio.h>
#include <string.h>
int main() {
mycat(5);
mycat(7);
mycat(30);
return 0; // from everything I've read this is necessary...?
}
char dest_buffer[100];
char str1[] = "Hello";
char str2[] = "World";
void mycat(int n) {
strcat(str1, str2);
memcpy(dest_buffer, str1, n);
printf("%s\n", dest_buffer);
}
다음은 내가 얻는 결과입니다.
마지막으로 지침에 따라 HelloWorld를 반환해야합니다. 나는 왜 그것이 단지 "orld"후에 계속 말하는지 완전히 확신하지 못한다. 이 문제를 해결하는 데 도움이되는 어떤 도움도 좋습니다! 나는 여기서 무엇을해야할지 너무 확신하지 못한다.
할당되지 않은 메모리에 액세스하므로 UB이므로 컴파일러마다 다를 수 있습니다. –
예를 들어'gcc'와'clang'을 사용하면 중단 된 호출이 발생합니다. 모든 컴파일러가이 작업을 수행하는 것은 아닙니다. –
다른 사람이 귀하의 질문에 만족스럽게 대답 한 경우, 다른 사람들이 귀하를 위해 어떤 해결책을 찾았는지 알 수 있도록 허용 된 답변으로 표시하십시오. –