gpt4 book ai didi

c - 指针&字符段错误

转载 作者:太空宇宙 更新时间:2023-11-04 04:27:45 25 4
gpt4 key购买 nike

我试图通过输入一些文件夹路径来制作提取文件名的程序。

结果很好,但问题出在结果的最后,有一些我无法弄清楚的段错误。

这是我写的。

#include <stdio.h>
#include <dirent.h>

int main() {

char folderpath;
printf("enter the path : \n");
scanf("%s",&folderpath);



DIR *d;
struct dirent *dir;
d = opendir(&folderpath);
if (d)
{
while((dir= readdir(d)) != NULL)
{
printf("%s\n", dir->d_name);
}
closedir(d);

};

return 0;
}

而且,结果就像

enter the path : /Users/gui/Desktop/extract/extract
.
..
main
main.c
Segmentation fault: 11

很抱歉问了这样一个非常简单的问题,我努力想弄清楚但我做不到。

感谢阅读这个问题。最良好的问候。

最佳答案

当您使用 %s 格式说明符调用 scanf 时,它需要一个指向字符数组的指针。您传递的是单个字符的地址。因此它将该变量的内存位置写到它旁边的任何地方。这会调用 undefined behavior .

你需要传递一个字符数组给scanf:

char folderpath[256];
printf("enter the path : \n");
scanf("%s",folderpath);

...

d = opendir(folderpath);

关于c - 指针&字符段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39880510/

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