我有以下问题:FPEN()提供分段错误,虽然文件存在并且是可访问的,并且路径是正确的。我有所有必要的东西。

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: 1pot: /proc/1/statSegmentation fault
谢谢你的任何想法。。。

最佳答案

从您的最新注释和代码来看,指针ime没有分配任何内存。这就是fscanf试图写入segfault的原因。
使用
fscanf(dat, "%d %s %c %d", &pid, ime, &stanje, &ppid);因为ime本身就是一个指针。

09-06 15:41