gpt4 book ai didi

c - fopen() 段错误,文件存在

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:00 24 4
gpt4 key购买 nike

我遇到了以下问题:fopen() 给出了 Segmentation Fault,尽管该文件存在并且可以访问并且路径是正确的。我拥有所有必要的内容。

int base(char* dir){

char* pot;
pot=malloc(sizeof(char)*512);
struct dirent *pointerDir;
DIR *pDir;
int pid;
char* ime;
char stanje;
int ppid;


pDir = opendir (dir);
if (pDir == NULL) {
printf ("Cannot open directory '%s'\n", dir);
return 1;
}

int i=0;

while ((pointerDir = readdir(pDir)) != NULL) {
char* str=malloc(sizeof(char)*20);
i=i+1;
int n=atoi(pointerDir->d_name);

if(n!=0){

strcpy(pot, dir);
sprintf(str, "%d", n);
strcat(pot, str);
strcat(pot, "/");
strcat(pot, "stat");
printf("pot: %s \n", pot);
//open file
FILE* dat=fopen(pot, "r");
if(dat!= NULL){
//do something
}
else{
printf("NULL \n");
}
}
}
closedir (pDir);


return 0;
}

我的输出是:

PID:1
锅:/proc/1/stat
分段故障

感谢您的任何想法...

最佳答案

根据您最新的评论和代码,指针 ime 没有分配任何内存。当 fscanf 尝试写入它时,这会导致段错误。

使用

fscanf(dat, "%d %s %c %d", &pid, ime, &stanje, &ppid); 因为 ime 本身就是一个指针。

关于c - fopen() 段错误,文件存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23500842/

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