어허

문자열 리턴하기 ! 본문

개발/C(C++)

문자열 리턴하기 !

AKDK 2010. 8. 12. 16:20
728x90
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

char* kocom(){
    int i = 0;
    char temp[3]={0,};
    char * recv_buff;
    char buff[22];
    recv_buff = (char *)malloc(32);
    // 메모리 할당을 받아야지만 리턴했을때에도 메모리가 지워지지않는다.
    memset(recv_buff, 0x00, sizeof(recv_buff));
    // 초기화 해주지 않으니까 첫 8배열에 `?@등 값이 들어간다
    for(i=0; i<21; i++)
    {
        sprintf(temp, "%02x", buff[i]);
        // buff값을 16진수 형태로 문자열로 temp에 쓴다
        // buff에는 aa 55 0c 등등 으로 들어있기때문에 나누기 위함 
        strcat(recv_buff,temp);
        // temp[0], temp[1]에 각각 있는것들을 recv_buff로 계속 이어붙인다.
    }
    return recv_buff;
} //end kocom

void main(){
    char *buff;
    buff=kocom(buf);
    printf("%s\n=", buff);
}// end main
맞는지 안 맞는지도 모르겠고 무식한 방법일지도 모르지만
어쨌든 계획대로 문자열을 헥사로 바꿔서 장비 작동 시키고
response 하는 값을 받아서 다시 배열에 넣고 그 배열을 문자열로 바꾸고
문자열을 리턴해서
리턴받은 문자열을 사용해서 다시 UI에 넘기기까지 !!!
성공 !
함수 자체를 포인터 함수로 선언하고
배열의 포인터를 넘겼을때 그 배열의 메모리가 지워지지 않게 미리미리 메모리 할당해준다음
배열의 포인터를 리턴해주는것이 핵심 !!!
간단한건데 이거 찾아서 하는데 오늘 하루 꼬박 들어갔음 ㅠ

사용하고난후 메모리 free() 해주는건 필수 !

728x90
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
공유하기 링크
Comments