2013-06-01 4 views
9

를 읽고 난 명령 줄 C에 입력합니다. 나는 그것을 스캔해야합니까, 아니면 그것을 접근 할 수있는 임의의 방법이 있습니까?명령 줄 인수는 파일

내 질문에 내 프로그램에서 myfile.txt를 어떻게 사용할 수 있습니까?

int 
main(){ 
    /* So in this area how do I access the myfile.txt 
    to then be able to read from it./* 
+0

fopen() 또는 open()을 사용하여 엽니 다. – Barmar

+0

파일을 읽는 방법에 대한 질문이나 인수 목록에서 파일 이름을 가져 오는 방법에 대한 질문은 무엇입니까? – Barmar

+0

유닉스 계열 시스템을 사용한다면 프로그램을'myprogram

답변

11

당신은 당신의 주요 기능으로 int main(int argc, char **argv)을 사용할 수 있습니다.

argc - 프로그램에 대한 입력 인수의 수입니다.
argv - 모든 입력 인수에 대한 포인터가됩니다.

  • argc 2
  • argv[0]myprogram 될 것입니다 될 것입니다 :

    그래서, 당신은 당신의 프로그램을 실행 C:\myprogram myfile.txt를 입력 한 경우.

  • argv[1]myfile.txt입니다. read this, 다른 모드에서 파일을 여는
    FILE *f = fopen(argv[1], "r"); // "r" for read

    :

자세한 내용 can be found here

파일을 읽을 수 있습니다.

+0

'txt' 파일 이름을'main'이 아닌 다른 함수에 넘겨주는 법? – Sigur

0

명령 줄 인수는 단순한 C- 문자열입니다. 원하는대로 할 수 있습니다. 귀하의 경우에는 파일을 열고 파일을 읽고 닫을 수 있습니다.

question (및 답변)이 유용 할 것입니다.

2
  1. (프로그램의 이름을 1로 인수가 전달되지 않은 경우는 동일입니다)이

    int main(int argc, char* argv [])

    • 는 argc 인수의 수를 지정처럼 메인이 선언

    • argv는 문자열 배열에 대한 포인터입니다 (적어도 하나의 멤버 - 프로그램 이름 포함)

    • 당신이 그렇게 같은 명령 줄에서 파일을 읽을 것입니다 :

      : 읽기

      File* file_handle;

    • 엽니 다 file_handle : C:\my_program input_file.txt

  2. 는 파일 핸들을 설정

    file_handle = fopen(argv[1], "r");

    • fopen은 파일에 대한 포인터를 반환하거나 파일이없는 경우 NULL을 반환합니다. ARGV 1, 인수로 읽고 싶은 파일이 포함

    • "R"은 당신이 사용 내용을 읽고

  3. (더 다른 모드 here에) 읽기 위해 파일을 열 것을 의미한다 예를 fgets :

    • fgets (buffer_to_store_data_in , 50 , file_handle); 당신은에 char * 버퍼를 필요 (예를 들면 문자의 배열 등)에 데이터를 저장, 두 번째 인수는 읽어 얼마나 지정하고 제 마지막 핸들

      fclose(file_handle);

를 닫고 파일
  • 포인터이다

    명령 줄을 사용하는 방법에 대한받은 모든 수행 :

  • 0

    모든 제안이 정확하지만, 그것은 당신이 또한 타이를 사용하여 고려할 수 나에게 소리 파일 대신 stdin으로 읽는 진부한 패턴을 만든 다음 파이핑으로 앱을 구동하십시오 (예 : myfile > yourpgm). 그런 다음 scanf을 사용하여 표준 입력에서 읽을 수 있습니다. 유사한 방법으로 stdout/stderr을 사용하여 출력을 생성 할 수 있습니다.

    1

    이것은 프로그래밍 101 방법입니다. 그것은 당연한 것으로서 많은 것을 필요로합니다. 그리고 어떤 에러 체크도 전혀하지 않습니다! 그러나 그것은 당신을 시작할 것입니다.

    /* this has declarations for fopen(), printf(), etc. */ 
    #include <stdio.h> 
    
    /* Arbitrary, just to set the size of the buffer (see below). 
        Can be bigger or smaller */ 
    #define BUFSIZE 1000 
    
    int main(int argc, char *argv[]) 
    { 
        /* the first command-line parameter is in argv[1] 
         (arg[0] is the name of the program) */ 
        FILE *fp = fopen(argv[1], "r"); /* "r" = open for reading */ 
    
        char buff[BUFSIZE]; /* a buffer to hold what you read in */ 
    
        /* read in one line, up to BUFSIZE-1 in length */ 
        while(fgets(buff, BUFSIZE - 1, fp) != NULL) 
        { 
         /* buff has one line of the file, do with it what you will... */ 
    
         printf ("%s\n", buff); /* ...such as show it on the screen */ 
        } 
        fclose(fp); /* close the file */ 
    } 
    
    관련 문제