C언어 메모리 동적할당 후 무자열 복사 하기 질문입니다!
조회수 567회
#include <stdio.h>
#include <stdlib.h>
int str_copy(char *str2, char *str1);
int str_len(char *str1);
int str_func(char **str2, char *str1);
int main(){
char str1[50]="I Love Chewing C hahaha";
char *str2;
char *str3;
str_func(&str2,str1);
str_func(&str3,"hello");
printf("%s\n",str1);
printf("%s\n",*str2);
printf("%s\n",*str3);
free(str2);
free(str3);
return 0;
}
int str_func(char **str2, char *str1){
str2=(char **)malloc(str_len(str1)*sizeof(char *)+1);
str_copy(*str2,str1);
return 0;
}
int str_len(char *str1){
int count=0;
while(*str1){
str1++;
count++;
}
return count;
}
int str_copy(char *str2, char *str1){
while(*str1){
*str2=*str1;
str2++;
str1++;
}
*str2='\0';
return 0;
}
위 코드는 str1 문자열을 str2 로 복사하고 마찬가지로 str3로 hello 라는 문자열을 복사 받는 작업입니다. str2 와 str3 를 직접 복사 받고 싶은 문자열의 길이만큼 메모리를 동적 할당 한 후에 str1,str2,str3 세개의 문자열을 출력 하고 싶어서 만들어 봤는데 실행이 안되서요 ㅠ 문자열의 길이를 구하는함수(str_len) 와 문자열을 복사하는 함수(str_copy) 그리고 그 두작업과 메모리를 할당하는 하나의 함수(str_func)를 이용해서 문제를 풀어 보고 싶은데 오류는 뜨지 않지만 실행이 안되네요..ㅠ 위 코드의 문제점이나 더 좋은 방법 등 피드백좀 받고 싶습니다! 오늘 이 싸이트 처음 이용해 보는데 실력자 분들이 많은 것 같아서요 부탁드립니다!!
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
int str_func(char **str2, char *str1){ str2=(char **)malloc(str_len(str1)*sizeof(char *)+1); str_copy(*str2,str1); return 0; }
->
int str_func(char **str2, char *str1){ *str2=(char *)malloc(str_len(str1)*sizeof(char)+1); str_copy(*str2,str1); return 0; }
printf("%s\n",str1); printf("%s\n",*str2); printf("%s\n",*str3);
->
printf("%s\n",str1); printf("%s\n",str2); printf("%s\n",str3);
-
(•́ ✖ •̀)
알 수 없는 사용자
- 답변 감사드립니다. 제가 개념이 많이 부족하다는걸 확실하게 느끼고 가네요. 기초적인 부분부터 흘리지않고 다시 공부 해야겠습니다. 물론 지금도 기초를 공부중이지만... 알 수 없는 사용자 2019.12.22 23:45
-
댓글 입력