Так что я изучаю C медленно, но верно, и я смущен этими выходами.Char array manipulatiion
#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);
}
Это выходные данные, которые я получаю.
>Hello
>HelloWo
>HelloWorldorldorldorld
Последний, в соответствии с указаниями, должен просто вернуть HelloWorld. Я не совсем уверен, почему он просто продолжает говорить «orld» раз после него. Любая помощь, помогающая в исправлении этого, была бы замечательной! Я не слишком уверен, что делать здесь.
Вы получаете доступ к нераспределенной памяти, поэтому это UB, и это будет отличаться от компилятора к компилятору. –
Например, с 'gcc' и' clang', я получаю прерывание вызова. Однако не все компиляторы сделают это. –
Если кто-то ответил на ваш вопрос к вашему удовлетворению, не стесняйтесь отмечать его как принятый ответ, чтобы другие знали, какое решение сработало для вас. –