gpt4 book ai didi

c - 目录条目 C 的 Memchr

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:30 26 4
gpt4 key购买 nike

有人可以帮我解决这个问题吗?如果名称中存在字母,我正在尝试检查每个目录条目。显然这是行不通的。我的主要问题是我在使用 namelist[n]->d_name 作为内存时是否正确使用了 memchr?

#include <dirent.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>

int main(void)
{
struct dirent **namelist;
int n;

n = scandir(".", &namelist, 0, alphasort);
if (n < 0)
perror("scandir");
else
{
char * search;
while (n--) {
search= (char*) memchr(namelist[n]->d_name,'a',(sizeof(namelist[n]->d_name)));
if(search !=NULL){
printf("%s\n", namelist[n]->d_name);
free(namelist[n]);
}
char * search;
}
free(namelist);
}
}

最佳答案

该代码实际上对我有用(在 Win7/CygWin 下):

pax$ ./qq
xyzzyaf
xyzzyae
xyzzyad
xyzzyac
xyzzyab
xyzzyaa
.bashrc
.bash_profile
.bash_history

pax$ ls -ad *a* .*a*
.bash_history .bash_profile .bashrc xyzzyaa
xyzzyab xyzzyac xyzzyad xyzzyae
xyzzyaf

但是你为什么要使用 memchrd_name 字段是 C 风格的字符串,您可以对其执行 printf("%s\n",...) 就证明了这一点。

你应该为此使用 strchr。使用 memchr 可能 搜索超出字符串的末尾,如果它在后面的任何垃圾中找到 a,则可能给出错误的结果。


如果这对您没有帮助,那么您需要定义短语“显然它不起作用”。换句话说,目录中的所有文件是什么以及您得到什么输出?这将极大地帮助解决这个问题。

关于c - 目录条目 C 的 Memchr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7815506/

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