아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
풍족한오솔개220
풍족한오솔개22020.05.02

<string.h>를 사용하지 않고 strcpy() 함수를 구현하려고 하는데 논리 오류가 발생합니다.

#include <stdio.h> void strcpy(char*, char*); int main() { char* sen1 = "Hello"; char* sen2 = "Friends"; strcpy(sen1, sen2); printf("The result: %s\n", sen1); return 0; } void strcpy(char* str1, char* str2) { int i = 0; while (*(str2 + i) != '\0') { *(str1 + i) = *(str2 + i); i++; } *(str1 + i) = '\0'; }

strcpy() 함수가 포인터 표현(*(d+i))으로 가리키도록 프로그래밍 하려고 합니다.

프로그램은 비쥬얼 스튜디오를 이용하고 있습니다.

혼자서 구상하다가 구글에도 쳐보고 하면서 여러 가지 다 해봤는데 계속 아래 사진처럼 떠요.

어디를 고쳐야 하는지 알려주세요..

55글자 더 채워주세요.
답변의 개수
1개의 답변이 있어요!
  • strcpy 함수는 문제가 없습니다.

    int main() { char dest[8] = "Hello"; const char *source = "Friends"; strcpy(dest, source); printf("The result: %s\n", dest); return 0; }

    main을 이렇게 수정하면 정상적으로 동작합니다.

    질문자님의 코드에서 sen1에 대입한 "Hello"는 const char * 상수 리터럴입니다.

    그 문자들이 있는 주소를 가리키고 있지만, 그 곳의 데이터를 수정할 수 없습니다.

    strcpy 함수는 str1이 가리키는 곳의 데이터를 수정합니다.

    str1에 데이터를 수정할 수 있는 주소를 가리키는 포인터를 넘기면 됩니다.