我已經將分段錯誤縮小到引起錯誤的特定代碼行。這是一個直觀的例子,顯示我遇到的問題。嘗試獲取文件名長度時出現分段錯誤
int main()
{
char** files;
int sum;
int i;
DIR *d;
struct dirent *dir;
d = opendir(".");
if (d)
{
sum = file_sum();
char* files[sum];
i = 0;
while ((dir = readdir(d)) != NULL)
{
files[i] = dir->d_name;
i++;
}
closedir(d);
}
else
{
return -1;
}
int len = strlen(files[0]); /*segmentation fault here*/
return 0;
}
本質上,程序正在做的是從當前目錄中獲取所有文件的名稱並將它們放入數組中。然後我將嘗試獲取所有文件名的大小,但是我一直在收到分段錯誤。我的理論是,文件名可能不是以null結尾的?如果這是真的,我不確定這是一個解決方法,但任何幫助表示讚賞。
謝謝
編輯:對不起,我在這裏有一個錯誤。只有當我嘗試存儲strlen返回值時纔會出現分段錯誤,因爲我現在已將代碼更改爲
是什麼file_sum辦?它沒有在你的例子中定義。您也正在使用文件而無需初始化它。 –