2016-04-08 9 views
-1

を動作しません-R私は、コマンド./myls -R何も表示され、すべての空白でプログラムを実行するとCで実装:(ヘルプが必要私のls -Rは私のLSの問題を持つ

int print_Recursive(char *dirname) 

{ 
char fbuf [256]; 
DIR *dir; 
struct dirent *dirp; 
struct stat sbuf; 

printf("\n"); 
dir = opendir(dirname); 

while ((dirp = readdir(dir))) 
{ 
    if(strcmp(dirp->d_name, ".") != 0 && 
     strcmp(dirp->d_name, "..") != 0) 
    { 
     sprintf(fbuf, "%s/%s", dirname, dirp->d_name); 

    } 
} 
closedir(dir); 


return 0; 
} 


int print_file(char *file, char *dir, struct stat buf, int showinode, int showlong, int showRec) 
{ 
if (showinode) 
    printf("%lld ", buf.st_ino); 

if (showlong) 
    print_long(file, dir, buf); 

if (showRec) 
    print_Recursive(dir); 
else 
    printf("%s\n", file); 

return 0; 
} 

は私が間違っているのかを把握することはできません:(

+1

あなたの ' print_Recursive'は繰り返されません(呼び出し自体)。 – lurker

+0

私はCで新しく、あなたは私を助けてくれますか? 'print_Recursive(dir);'私はここでそれを呼びます、それはありませんか? –

+0

再帰的なことは、それ自体も呼び出すことを意味します。したがって 'print_Recursive'の中から' print_Recursive'を呼び出すことになります。具体的には、 'print_Recursive'内の' while'ループでは、ファイルがディレクトリであるかどうかをチェックし、そうであればそのディレクトリで 'print_Recursive'を呼び出します。さらに、@ TimLeathartはなぜ出力がないのかを指摘します。 – lurker

答えて

0

をあなたはに値を格納するsprintfを使用していますが、を印刷することはありませんので、何も表示されませんwhileループの後に次の行を追加してみてください:。

printf("%s", fbuf); 
+0

または 'printf(fbuf);や' printf( "%s /%s"、dirname、 dirp-> d_name); '余分なバッファが目的を果たさないので、 – lurker

+0

それは働いていましたが、現在のディレクトリの内容を表示しません:( –