当我尝试运行此代码时,此代码会返回分段错误 使用 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);
}
如果你能帮助我谢谢