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 를 누르면 된다.
'programming language > C' 카테고리의 다른 글
C/C++ 매크로를 사용한 정수 타입 swap (0) | 2016.02.19 |
---|---|
C/C++ 비트연산 매크로 (0) | 2015.03.31 |
Windows 에서 GCC 및 boost 사용하기 (0) | 2014.07.20 |
C/C++ Directory File Listing (0) | 2014.07.20 |
C++ file path 나누기 SplitPath (0) | 2014.07.18 |
C++ range based for loops (0) | 2014.03.02 |
C++ Cartesian Product (0) | 2014.03.01 |
C++ XML parser pugixml (4) | 2014.02.09 |
댓글