2017-11-25 30 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"); 

残りのプログラムは同じです。