2013-02-16 3 views
0

명령 줄 매개 변수를 사용할 수 있어야하는 프로그램을 작성 중입니다. 기본적으로 사용자는 프로그램을 호출하는 동안 명령 프롬프트를 통해 파일 이름을 지정할 수 있어야합니다. 즉 프로그램은 doCalculation -myOutputfile.txt와 같은 매개 변수를 사용할 수 있어야합니다. 여기서 doCalculation은 내 프로그램의 이름이고 myOutputfile은 내 결과가 쓰여지도록 (즉, 내 계산 결과를 지정된 파일 이름으로 출력하는) 파일입니다.명령 줄을 사용하여 파일로 출력

지금까지 명령 프롬프트를 통해 내 기능을 호출 할 수 있습니다. 나는 내 프로그램이 지정된 파일 이름을 쓰는 방법을 모르거나 이미 존재하지 않는다면이 파일을 만든다. 내가 눈치

int main(int argc, char *argv[]) 
{ 
    FILE* outputFile; 
    char filename; 

    // this is to make sure the code works 
    int i = 0; 
    for (i = 0; i < argc; i++) { 
     printf("argv[%d] = %s\n", i, argv[i]); 
    } 

    //open the specified file 
    filename= argv[i]; 
    outputFile = fopen("filename", "r"); 

    //write to file 
    fclose(outputFile); 
} 
+1

C 라이브러리의 문서를 읽으려고 했습니까? fopen 함수의 mode 매개 변수에 대한 설명을 읽으십시오. – dbenham

+1

Google 검색 "c 파일에 쓰기"를 사용하면 예제가 충분합니다. – dbenham

+0

Beau C.가 말한 것처럼 실제로 열어 본 파일에 쓰려면'fprintf (outputFile, "blah blah");와 같은 줄을 추가해야합니다. –

답변

0

그래서 몇 가지 ...

  1. 를이 파일에 기록하려면 대신 쓰기 모드 "w"를 사용하여, 다음과 같이

    내 코드입니다 파일을 열 때 읽기 모드의 경우 "r"을 사용하십시오.

  2. 파일 이름을 문자열 (char *)에 대한 포인터가 아닌 단일 문자로 선언했습니다. 이것을 포인터로 만들면 길이가 1보다 큰 파일 이름 (단일 문자가 아닌 문자 배열)이 허용됩니다.
  3. Ashwin Mukhija가 언급했듯이, for 루프를 2로 설정 한 후, 실제로 2 번째 (인덱스 1) 인수를 원할 때 사용합니다.
  4. open() 함수의 filename 인수는 파일 이름 변수가 아닌 리터럴 "filename"입니다.

이 코드가 문제를 해결하는 데 도움이되는지 확인하려면 (파일에 쓸 수있는 방법을 보여주기 위해 fprintf()도 사용). 건배!

int main(int argc, char *argv[]) 
{ 
    FILE* outputFile; 
    char* filename; 

    // this is to make sure the code works 
    int i = 0; 
    for (i = 0; i < argc; i++) { 
     printf("argv[%d] = %s\n", i, argv[i]); 
    } 

    //saftey check 
    if(argv[1]) 
    { 
     filename = argv[1]; 

     //open the specified file 
     outputFile = fopen(filename, "w"); 

     fprintf(outputFile, "blah blah"); 

     //write to file 
     fclose(outputFile); 
    } 

    return 0; 
} 
관련 문제