- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的代码中有以下内容:(在 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/
Write a C program that uses two processes (not threads) to sort the regular files in a directory and
我正在进行递归遍历,发现 ftw 可以帮助我。 我的程序必须遍历目录并查找文件。对于每个文件,它必须填充一个 FILEMATCH 结构。为此,buildFileMatch 函数接受 char* 文件名
假设一个线程程序正在执行文件系统操作(遍历、读取、创建、删除、移动目录和文件)。 根据 an answer , ftw() 在这种情况下是不安全的。 (此外,ftw() 需要全局变量,这看起来不太优雅
有没有办法将参数发送到 ftw() 以用于处理路径上的每个文件/目录?由于多线程问题,将参数作为全局变量关注有点困难,即将值设置为全局变量将对所有线程可见,这是错误的。 最佳答案 正确设计的 C 回调
我的代码中有以下内容:(在 c 中编码) ftw(argv[2], parseFile, 100) argv[2] 是本地目录路径。例如。 argv[2] = "TestCases"并且在与
我从 opengroup.org 读了两个手册页( ftw 、 nftw ),所以我认为 ftw() 和 nftw() 不能保证线程-安全。 但我找到了另一个 page关于这些函数,请参阅 man7.
这是我正在尝试做的事情: Write a C program using two processes (one parent, one child). Child process goes throu
我想使用 ftw-function递归遍历文件系统结构。此外,该方法应在类内部使用。此外,由 nftw() 调用的入口函数属于同一类。情况必须如此,因为入口函数应该更改某些类成员,具体取决于它找到的文
来自 Wikipedia : Generic programming is a style of computer programming in which algorithms are writte
阅读 man 3 ftw 我观察到“POSIX.1-2008 将 ftw() 标记为已过时”。 现在我很担心并且想成为一个“好的程序员”并且可能尊重 ftw() 的过时性。我现在仍然在努力寻找我应该使
我是一名优秀的程序员,十分优秀!