편집 기록

편집 기록
  • 프로필 정영훈님의 편집
    날짜2019.12.22

    C언어 메모리 동적할당 후 무자열 복사 하기 질문입니다!


    #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)를 이용해서 문제를 풀어 보고 싶은데 오류는 뜨지 않지만 실행이 안되네요..ㅠ 위 코드의 문제점이나 더 좋은 방법 등 피드백좀 받고 싶습니다! 오늘 이 싸이트 처음 이용해 보는데 실력자 분들이 많은 것 같아서요 부탁드립니다!!

  • 프로필 알 수 없는 사용자님의 편집
    날짜2019.12.22

    C언어 메모리 동적할당 후 무자열 복사 하기 질문입니다!


    include

    include

    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)를 이용해서 문제를 풀어 보고 싶은데 오류는 뜨지 않지만 실행이 안되네요..ㅠ 위 코드의 문제점이나 더 좋은 방법 등 피드백좀 받고 싶습니다! 오늘 이 싸이트 처음 이용해 보는데 실력자 분들이 많은 것 같아서요 부탁드립니다!!