gpt4 book ai didi

c - 在 c 中正确使用 ftw()

转载 作者:太空狗 更新时间:2023-10-29 12:33:36 24 4
gpt4 key购买 nike

我的代码中有以下内容:(在 c 中编码)

    ftw(argv[2], parseFile, 100)  

argv[2] 是本地目录路径。例如。 argv[2] = "TestCases"并且在与我的 .o 文件相同的目录中有一个 testcases 文件夹。

我的理解是,这应该遍历目录 TestCases 并将找到的每个文件发送给函数 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 则不起作用

最佳答案

man page 中所述,ftw 正在调用的函数的非零返回值告诉 ftw 停止运行。

您的代码有各种返回语句,但唯一返回 0 的是错误情况。

关于c - 在 c 中正确使用 ftw(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19508835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com