2011-09-23 2 views
0

저는 몇 시간 동안이 작업을 해왔으며 필자는 수색 및 검색을했으며 내 코드는 여전히 올바르게 작동하지 않습니다.읽기 기능을위한 FILE 포인터를 보내십시오.

내가 읽고 싶은 파일로 argv[]을 사용하는 메인 내의 기능에서 내 파일을 읽으려면 어떻게해야합니까?

void words(char *filename) 
{ 
    FILE *filesToRead = fopen(filename, "rt"); 
    /* ... */ 
} 

int main(int argc, char *argv[]) 
{ 
    if (argc > 1) 
     words(argv[1]); 

    return 0; 
} 

는 솔직히 (그리고 기분을 상하게하지 마십시오) 방법은 당신의 코드는 당신이 사용하고있는 C 책에서 몇 장을 생략 한 것 같습니다

#include <stdio.h> 
#include <stdlib.h> 
#include <errno.h> 


FILE words(FILE *filesToRead) 
{ 
    const char *Open; 
    Open = (char *)filesToRead; 

    filesToRead = fopen(Open, "rt"); 
    int line; 
    while ((line = fgetc(filesToRead)) != EOF) 
    { 
     printf("%c", line); 
    } 

    fclose(filesToRead); 

} 

int main(int argc, char *argv[]) 
{ 
    char *ah = argv[]; 
    words(ah); 
    return 0; 
} 

답변

4

이보십시오.

+0

그래, 나는 책을 끝내는 것처럼 보이지 않는다. 나는 최선을 다해 배웁니다. –

0

argv[]char *의 배열이다. 예를 들어, 같은 명령 줄에서 프로그램을 호출하는 경우 : 다음

my_prog.exe foo는 바

:

  • argc 3 할 것이다;
  • argv[0] 당신이 하나 개의 인수를 기대하는 경우
  • argv[1] "foo는"
  • argv[2]가 "바"당신의 main() 기능 내부 그래서

을 가리 킵니다 가리 킵니다 "my_prog.exe"을 가리 킵니다 argc의 값이 2인지 확인한 후 argv[1]에서 인수를 읽어야합니다.

+0

흠 .. 좋아. 여전히 struct FILE *하지만 인수가 char 형임을 알리는 오류가 발생합니다. * –

+0

words() 함수도 잘못되었습니다. @ cnicutar의 대답이 필요합니다. argv []가 어떻게 작동하는지 이해하는 데 도움이되었습니다. – Vicky

+0

예, 도움을 주셔서 대단히 감사합니다. 모두에게 감사드립니다. –

관련 문제