mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Friday, March 16, 2007

C언어] 파일에 줄번호, 행번호 (줄 번호, 행 번호) 붙이기 Line Number Text File


지정해 준 텍스트 파일의 각 줄마다 행 번호를 넣는 C소스 코드입니다. 텍스트 파일을 처리하는 C 코드 작성 공부에도 유용합니다.

다음 예제는 명령행 옵션으로 지정해 준 test.txt 라는 텍스트 파일의 각 행에 줄 번호를 붙여 화면에 출력합니다.

출력 결과를 파일로 저장하려면, 소스를 컴파일한 후
example.exe test.txt > out.txt
이렇게 재지향을 하면 out.txt 라는 파일로 결과가 저장됩니다.

텍스트 파일의 각 줄마다 행번호 추가 소스


소스 파일명: example.cpp
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
#include <stdio.h>
#include <stdlib.h> // exit() 함수를 위해

#define MAX_COLS 32768

int main(int argc, char *argv[]) {
  FILE *in;
  char s[MAX_COLS]; // 행이 1줄씩 임시로 저장될 버퍼
  unsigned int counter = 1; // 행번호가 저장되는 변수


  if (argc == 1) { // 옵션이 없으면 도움말 출력하고 종료
    fputs("\nHelp: program_name <file_name>\n", stderr);
    exit(1);
  }


  if ( (in = fopen(argv[1], "rt")) == NULL) { // fopen() 함수로 파일 열기
    fprintf(stderr, "\nCannot open input file: %s\n", argv[1]);
    exit(1); // 모든 파일 닫고, 프로그램 종료
  }


  while (fgets(s, MAX_COLS, in) != NULL) { // 읽기 시작: 프로그램의 본체
    printf("%4d: %s", counter, s); // 한 줄씩 화면에 출력
    counter++; // 행 번호 1씩 증가
  }


  fcloseall(); // 모든 파일 닫기
  return 0;
}



위의 소스를 컴파일한 후,
test.txt 라는 파일을 명령행 옵션으로 지정하여
example.exe 를 실행한 결과 화면:
D:\Z>cl /nologo example.cpp
example.cpp

D:\Z>example.exe

Help: program_name <file_name>

D:\Z>example.exe test.txt
   1: 가나다라
   2: 마바사아
   3:
   4: 철수는 중국집에서 자장면을 시켜 먹었습니다.
   5:
   6: 그리고 맹구는 학교에 갔습니다.
   7:
   8:
   9: 철수는 학교에 가지 않고
  10: 하루 종일 게임만 했습니다.
  11:
  12: 맹구는 방과 후 철수를 만났습니다.
  13:
  14: 철수는 맹구와 게임을 했습니다.
  15:

D:\Z>example.exe test.txt > out.txt

D:\Z>




참고: ▶▶ [C언어 기초 예제] 실행할 때 지정해준 파라미터(옵션; 인수, Arguments) 얻기, 해석하기

참고: ▶▶ C언어 예제] 텍스트 파일 읽기; 도스창 화면에 파일 내용 출력; 도스 type 명령

행 번호, 줄 번호 추가 유틸리티 (온라인 버전): ▶▶ 행번호 줄번호 붙이기 툴; 소스 텍스트 파일 각행마다; Text Line Number Tool




tag: cpp
C언어 | C/C++ (Visual C++)

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top