C 언어에서 fget() 을 활용하여 간단하게 입력을 받는 방법을 기록하려 한다.

 

fget() 은 스트림에서 문자열을 읽어 들이는 함수인데~ sscanf() 와 함께 아래 코드와 같이 사용 할 수 있다.

 

아래 코드는 숫자 두 개를 받아서 간단하게 라인 수를 넣고 그 합을 출력해 주는 코드이다.

 

#include <stdio.h>

 

#define    TEXTLENGTH    2048

 

int    main()

{

char    text[TEXTLENGTH] ;

double    xi, yi ;

int        n=1;

 

while (fgets (text, TEXTLENGTH, stdin) != NULL )

{

if (sscanf (text, "%lf %lf", &xi, &yi ) == 2 )

{

    printf("%d, %lf+%lf=%lf\n",n, xi, yi, xi+yi);

    ++n ;

}

else

{

    fprintf( stderr, "Data Number Error : %s", text ) ;

}

}

return 0 ;

}

 

일단 현재 내 컴퓨터 환경은 윈도우 7, 64 비트이고 mingw 가 설치되어 있다.

 

위 코드의 파일 명은 standardIO.c 인데~ 다음과 같이 CMD 창에서 컴파일 한다.

 

gcc standardIO.c -o standardIO

 

다음으로 입력을 위한 test.txt 파일을 다음과 같이 만들었다. 단순히 탭으로 구분된 숫자 두 개씩 저장한 것이다.

 

아래 명령어로 test.txt 파일의 내용을 standardIO.exe 에 넣어주면~

 

standardIO.exe < test.txt

 

아래와 같은 결과가 나온다.

 

아래와 같이 명령하면~

standardIO.exe < test.txt > result.txt

 

result.txt 파일이 다음과 같이 만들어 지기도 한다.

 

아래 그림과 같이 standardIO.exe 를 실행하고~ cmd 창에 숫자를 넣어서 계산 할 수도 있다. 종료는 Ctrl + C 를 누르면 된다.


MATLAB 에서 txt 파일을 출력하는 경우 다음 과정에 따라 처리 한다.

 

  • fopen() 함수를 이용하여 파일을 쓰기 모드('w')로 연다.

 

  • fprintf() 함수를 이용하여 파일에 내용을 쓴다.

   

  • fclose() 를 이용하여 file handle 을 닫아 준다.

  



 

다음과 같은 데이터를 이용하여 위 과정 대로 test_file.txt 파일에 저장해 보자.

 

 

저장하는 과정은 다음 코드와 같다.

 

 

 

저장된 파일 test_file.txt 을 열어서 확인해 보면 다음과 같다.

 

7 8 

3 7 

7 1 

1 5 


위 결과를 보면 정상적으로 저장이 안 된 것을 확인 할 수 있다.



 

이는 fprintf 함수에서 %d %d 를 써서 10진수 숫자를 저장할 때

 

각 열 벡터 별로 즉 MATLAB 이 일반적으로 처리하는 행 순서대로 저장하기 때문이다.

 

따라서 matrix 값을 정확히 저장하기 위해서는 transpose 를 취해준 후 저장 해야 한다.

 

fprintf() 문장의 올바른 코드는 다음과 같다.

 

fprintf(file_h,'%d %d \n', x.'); % 10진수 이므로 %d 사용

 


텍스트 파일을 열어서 결과를 확인하면 다음과 같이 정상적으로 저장 된 것을 확인 할 수 있다.

 

7 7 

8 1 

3 1 

7 5  

    


'programming language > MATLAB' 카테고리의 다른 글

MATLAB nargin, nargout  (6) 2011.04.24
MATLAB laplace, inverse laplace transform  (0) 2011.04.24
MATLAB 변수를 저장 하자~ mat file  (0) 2011.04.21
MATLAB NaN  (0) 2011.04.20
MATLAB 파일 출력  (0) 2011.04.19
MATLAB 파일 읽기 importdata()  (0) 2011.04.18
MATLAB binomial r.v. generation  (4) 2011.04.17
MATLAB cell class  (6) 2011.04.11
MATLAB taylor, Maclaurin serise  (0) 2011.04.10

+ Recent posts