저는 자체 strcpy 프로그램을 구현해야하는 'C'함수가 있습니다. 여기에 내가 쓴 것이있다. 그러나 세그멘테이션 오류의 원인을 디버그 할 수 없습니다.C 함수에서 문자열 복사를 시도하는 중 세그먼트 오류가 발생했습니다.
#include <stdio.h>
#include <stdlib.h>
char * mystrcpy(char *dest, char *src) {
char * ptr = dest;
while (*src != '\0'){
*ptr = *src;
ptr++; src++;
//printf("Dest is \"%s\" and Source is \"%s\"\n",dest,src);
}
*ptr = '\0';
return dest;
}
int main() {
char str[] = "I rock always";
char * dest = NULL;
dest = mystrcpy(dest, str);
printf("Source String %s and Destination String %s\n", str, dest);
}
누군가이 동작을 내게 설명 할 수 있습니까?
의 strcpy의 한 줄 K & R 버전이 있습니다 :'동안 (* 이명 령 ++ = * STR ++) { ;}'못생긴 일 이겠지만 선행 규칙을 이해하는 법을 배우는 좋은 방법입니다. – wildplasser
목표는 전체 문자열을 복사하는 것이므로 추측합니다. 이 '\ 0'체크를 벗어나 목적지 문자열에 복사되도록하는 것이 합리적입니다. 그렇다면 질문은 언제 멈출지를 알고 있습니까? – Code4Fun
'세그멘테이션 오류의 원인을 디버그 할 수 없습니다.'- 분명히 시도하지 않았기 때문에. –