안녕하세요! 함수 그리고 문자열쪽이 어려워서 질문남깁니다.
60단원~ 함수 공부 중에 함수와 매개변수쪽에서!
주소를 인수로, 포인터 또는 배열을 인자로 받아드려 주소 공유를 통해 Main함수의 num1 num2를 바꾸는 그런 예제를 보았는데요,
그것과 비슷하게 제가 따로 두 문자열을 변환시키는 함수를 만들고자 했습니다.
따라서 첫번째로 main에서 s1,s2 메모리를 함수로 할당시켜주고
Change_string(s1,s2); 를 통해 함수로 보내어 void (함수명) (*first,*second)로 받았습니다.
하지만 이 과정 그리고 함수 내에서 strcpy로 수정하는 과정이 모두 원활히 진행되지 않습니다.(오류 및 디버그에서도 문제가있고)
제가 생각했을 때는 외부 함수에서 포인터에 대해 간과한 부분이 있는 것 같습니다. (예를들어 first라는 새로운 포인터로 받았기때문에 Read만 가능하다 라던지... 그러나 first[] 로 받아도 안되는건 매한가지...)
혹시 저와 같이 함수 내에서 포인터로 받아들일때 주의해야될 사항이 있나요??
코드는 답글로 남깁니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void *getmem(){
return malloc(10);
}
void change_string(char *first, char *second) {
char *change = malloc(10);
strcpy(change, first);
strcpy(first, second);
strcpy(second, change);
free(change);
}
int main() {
char *s1 = getmem();
char *s2 = getmem();
s1 = "A";
s2 = "B";
printf("ORG : %s %s\n", s1, s2);
change_string(s1, s2);
printf("Cng : %s %s\n", s1, s2);
free(s1);
free(s2);
return 0;
}