c - 在 c 中使用箭头运算符运行 chdir 然后打印的段错误

标签 c pointers segmentation-fault operator-keyword

#include <stdio.h>


typedef struct test{
 int app;
}test;

int main()
{
int fi;
FILE* fp;
test* banned;
banned->app=2;
fi=chdir("/home");
    printf("%d", fi);
return 0;
}

这是一个更大计划的一部分。我需要能够从读入文件导航到目录,并将信息放入结构中。但是,每当该程序编译时都会出现段错误。在 gcc 编译上运行 gdb

#0  0x08048421 in main ()

这是编译器的问题还是代码中缺少启用此功能的内容?

注意:这已经解决了我是一个彻头彻尾的白痴,并试图从我刚刚在脑海中构想的帽子中拉出一只兔子......或者说我没有将我的引用与实际值联系起来,所以编译器抛出了一个合身。解决方案是创建一个“真正的结构”,然后通过 reference=&normalpointer 将引用指针指向它,感谢您的帮助

尽管 id 喜欢在没有引用的情况下使用结构,但我需要将其传递给不同的函数。但是提到的解决方案比我做的要好

最佳答案

您正在写下一个未初始化的指针,因为您已将 banned 定义为指向 test 类型结构的指针,而不是 test< 类型的实例。将 test* banned 更改为 test banned。然后,您将使用 . 而不是 -> 来访问 banned 的成员,例如banned.app=2

关于c - 在 c 中使用箭头运算符运行 chdir 然后打印的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23121207/

相关文章:

C:如何才能使 scanf() 输入具有两种格式之一?

c - 尝试访问 C 中链表结构的元素并调用结构元素上的函数

c - 输入第一个元素后出现段错误

android - NDK 一般段错误,decStrong?

c - 如何使用命令提示符运行 C 程序

c - 构建共享对象库 : ldd does not show specified name

c++ - 为什么我不能在此代码中将 A* 转换为 B*?

c++ - 为什么我得到一个无效指针?

c - 尝试读取文件时出现段错误?

c - 将随机元素分配给函数中的 int 二维矩阵时,如何避免 C 中的 SIGSEGV 段错误?