본문 바로가기
개발/Matlab

Matlab Coder 사용시 공백이 있는 문자열 불러오기

by belitino 2013. 10. 23.

참조: http://ra2kstar.tistory.com/173

 

Matlab R2013a의 Matlab Coder에서 공백이 있는 문자열을 파일에서부터 읽어오려면 다음과 같은 코드를 사용해야 합니다.

 

szBuffer = char(zeros(1, 255, 'uint8')); fpInFile = coder.opaque('FILE *', 'NULL'); fpInFile = coder.ceval('fopen', [Filename 0], ['r' 0]); coder.ceval('fgets', coder.ref(szBuffer), 255, fpInFile);

 

R2013a에서 file write를 위한 fopen은 Matlab 함수로 지원하나 read를 하기 위한 fopen은 지원하지 않기 때문에 coder.ceval 함수를 써서 C 함수를 불러야 하는데요. 제가 생각하기에는 file write보다 read가 더 쉬울 것 같은데 어떻게 된 일인지 거꾸로 write는 지원을 하네요.

 

문제는 fgets() 함수가 1라인을 읽어오는 것 까지는 좋은데, fgets는 개행 문자까지 읽어오기 때문에 다음과 같이 Matlab에서 이를 잘라주는 작업을 해야 합니다. C에서 잘라주는 작업은 참조의 링크를 참조하시면 됩니다.

 

    for i = 1:length(szBuffer)
        if szBuffer(i) == char(10) %'\n'
            szBuffer(i) = char(0); % NULL
            break;
        end %if
    end % for

 

보시다시피 Matlab에서 개행 문자를 잘라내기는 많이 불편한데요. 제가 판단하기에 Matlab Coder 사용시에는 될 수 있으면 공백이 있는 문자열을 사용하지 않는 것이 좋을 듯 합니다.