При написании c-кода я пытался написать strcpy
собственный код, и я столкнулся с этой проблемой.
#include <stdio.h>
#include <string.h>
void strcpy2(char *s, char *t);
int main() {
char a[10] = "asds";
char b[10] = "1234567890";
strcpy2(a, b);
printf("Copy completed! : %s", a);
return 0;
}
void strcpy2(char *s, char *t) {
while ((*s++ = *t++));
}
Код ошибки: процесс завершен с кодом выхода -1073741819 (0xC0000005)
Благодаря этому вопросу в s.o я узнал, что строка должна заканчиваться на '\ 0', но почему приведенный выше код не работает, даже если он не вызывает ошибки при объявлении? (Это хорошо работало, когда char b [10] = "123456789")
Итак, как именно '\ 0' влияет на этот процесс и в конечном итоге вызывает ошибку? (Время выполнения? Время компиляции и т. Д.)
(Я только знаю, что '\ 0' должно быть концом строки)