gpt4 book ai didi

C语言,readdir和segmentation fault on running

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

当我尝试运行这段代码时,它会返回一个段错误使用 gcc 构建文件时没有出现任何内容

如果您对在哪里搜索修复它有任何想法,请提供您的建议,谢谢。

必须在函数 readrep() 中发生,特别是 opendir() 和 readdir() 但我没有看到任何错误,感谢帮助

#include<dirent.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<limits.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define MAX 256


FILE* f;

void gowrite(char * chemin){
f=fopen("locate.db.tmp","a+");

int size=strlen(chemin);
char str[MAX];

fwrite(&size,sizeof(int),1,f);
fwrite(str,sizeof(char),size,f);
fclose(f);
}
void readRep(char* str){
struct dirent repStruct;
struct dirent * prepStruct;
struct stat structStat;
struct stat *buff;
buff=&structStat;
prepStruct=&repStruct;
DIR * d=opendir(str);

while((prepStruct=readdir(d))!=NULL){

int x;
char* fi=malloc(sizeof(char)*MAX);
fi=(prepStruct->d_name);
x=stat(fi,buff);
mode_t m;
m=structStat.st_mode;
int test;
test=S_ISREG(m);

if(test==0){

strcat(str,"/");
strcat(str,fi);
readRep(str);
}
else{
char *chemin=realpath(fi,NULL);
gowrite(chemin);
free(chemin);
chemin=NULL;
}

}


}

int main(int argN,char** argv){






char* path=getenv("HOME");
chdir(path);

readRep(".");









rename("locate.db.tmp","locate.db");
exit(0);





}

如果你能帮助我谢谢

最佳答案

这可能不是唯一的问题,但您将字符串文字 "." 传递给 readRep 函数,然后在该函数中使用 strcat 向它附加一些东西。您不能修改字符串文字,当然也不能向它们附加任何内容。

关于C语言,readdir和segmentation fault on running,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23215170/

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