私のコードには次のものがあります:(cでのコーディング)
ftw(argv[2], parseFile, 100)
argv[2] はローカル ディレクトリ パスです。例えば。argv[2] = "TestCases" .o ファイルと同じディレクトリに testcases フォルダーがあります。
私の理解では、これはディレクトリ TestCases をトラバースし、見つかったすべてのファイルを関数 parseFile に送信する必要があります。
実際に何が起こるかというと、引数を関数 parseFile に送信するだけで、それだけです。私は何を間違っていますか?これを適切に使用するにはどうすればよいですか?
編集: これは parseFile です:
int parseFile(const char * ftw_filePath,const struct stat * ptr, int flags){
FILE * file;
TokenizerT * currFile;
char fileString[1000], * currWord, * fileName;
fileName = strdup(ftw_filePath);
if( fileName == NULL || strlen(fileName) <= 0){
free(fileName);
return -1;
}
printf("\n%s\n",fileName);
if(strcmp(fileName,"-h")== 0){
printf("To run this program(wordstats) type './wordstat.c' followed by a space followed by the file's directory location. (e.g. Desktop/CS211/Assignment1/test.txt )");
free(fileName);
return 1;
}
else{
file=fopen(fileName,"r");
}
if(!file){
fprintf(stderr,"Error: File Does not Exist in designated location. Please restart the program and try again.\n");
free(fileName);
return 0;
}
memset(fileString, '\0', 1000);
while(fscanf(file,"%s", fileString) != EOF){ /* traverses the file line by line*/
stringToLower(fileString);
currFile = TKCreate("alphanum",fileString);
while((currWord = TKGetNextToken(currFile)) != NULL) {
insert_List(currWord, words,fileName);
}
free(currFile->delimiters);
free(currFile->copied_string);
free(currFile);
memset(fileString, '\0', 1000);
}
fclose(file);
free(fileName);
return 1;
}
argv[2] に TestCases/big.txt を入力すると機能しますが、TestCases を入力すると機能しません