2017-11-25 9 views
0
FILE * file; 
    file = fopen(argv[2] , "r"); 

    float val; 

    if (file) { 
     while (fscanf(file, "%s", str)!=EOF){ 
      val = atof(str); 
      root = insert(root, val); 
     } 
      fclose(file); 
     }else{ 
     exit(1); 
     } 

저는 지금 당장 가지고있는 코드 섹션입니다. 명령 줄에서가 아니라 stdin에서 읽을 수 있도록 변경하려고합니다. 예를 들어 프로그램을 실행하는 것은 "./a.out x file.txt"대신 "./a.out x < file.txt"가됩니다.명령 줄 대신 stdin에서 어떻게 읽을 수 있습니까?

답변

0

fopen()을 사용하여 파일을 여는 대신 fdopen() 호출을 사용하여 표준 입력의 파일 설명자 위에있는 FILE *을 얻습니다. 파일 설명자가 0이거나 다른 사람이 프로그램을 더 쉽게 읽을 수 있도록하려면 unistd.h 헤더의 리터럴 STDIN_FILENO을 사용할 수 있습니다. 다음과 같이 표시됩니다.

file = fdopen(STDIN_FILENO, "r"); 

나머지 프로그램은 그대로 유지됩니다.

관련 문제