궁금증 연구소

안녕하세요. 궁금증연구소 입니다.

오늘 포스팅 주제는 "[c언어] strcpy 와 포인터 활용시 주의할점" 입니다.

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


char * removeSpace(char *ps);

main()
{

    char str[] = "park    mun     kim   choe    lee   ";
    char *pa;

    pa = removeSpace(str);

    puts(pa);
    delete[] pa;
}

char * removeSpace(char *ps){
    char buff[50]={0};
    char *pb = buff;
    int sw =0;
    while(*ps){
        if (*ps != ' '){
            *pb = *ps;
            pb++;
            sw = 1;
        }
        if (*ps == ' ' && sw == 1) {
            *pb = ',';
            pb++;
            sw = 0;
        }
        ps++;
    }
    *(pb-1) = 0;       
    

    char *pa = new char[strlen(buff)+1];
    strcpy(pa, pb);  

    return pa;

}

위 코드에서 sctrcpy의 두번째 인수에 pb를 쓰면 에러가 발생한다. pb가 while을 거치면서 증가된 상태여서 buff의 첫번째 값을 가리키고 있지 않기 때문이다. 따라서 pb대신 buff를 쓰거나, pb를 초기화 한뒤 사용해야 한다. buff를 쓰는게 더 간단한듯하다.

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading