C 语言快速联合实现中的分段错误(核心转储)

2024-04-04

#include<stdio.h>
#include<stdlib.h>
int *id,N;

main()
{
    FILE* file=fopen("a.txt","r");
    int i,p,q,c;
    fscanf(file,"%d",&N);

    id=(int *)malloc(N*sizeof(int));

    for(i=0;i<N;i++)
        *(id+i)=i;

    while(!feof(file))
    {
        fscanf(file,"%d %d",&p,&q);
        if(!connected(p,q))
            unn(p,q);
    }
    fclose(file);
    c=1;

    while(c==1)
    {
        scanf("%d %d",&p,&q);
        printf("%d\nYes(1) or No(0)    ",connected(p,q));
        scanf("%d",&c);
    }
}

connected(int p,int q)
{
    return((root(p))==(root(q)));
}

unn(int p,int q)
{
    int j=root(q);
    int i=root(p);
    *(id+j)=i;
}

root(int i)
{
    while(i!=(*(id+i)))
        i=*(id+i);
    return(i);
}

编译时,不会显示任何错误消息。但是,当我尝试执行该程序时,它显示“分段错误(核心已转储)”。为什么会发生这种情况? 正如您可能已经注意到的,这是实施快速联盟的尝试。

快速查找的实现没有任何麻烦,使用相同的文件“a.txt”,只需对此代码进行一些调整。 * Yes 或No 供用户查询。


我猜这就是问题所在

root(int i)
{
    int p;  
    while(p!=(*(id+p)))   <-- p uninitialised 
        p=*(id+p);
    return(p);
}

because p未初始化,但您将其用作指针取消引用中的偏移量。即使这不是原因,它仍然是一个大问题。

您已编辑问题以离开

root(int i)
{
    int i;  
    while(i!=(*(id+i)))  
        i=*(id+i);
    return(i);
}

您在其中重新声明了i局部变量以及i作为函数参数传递的变量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 语言快速联合实现中的分段错误(核心转储) 的相关文章

  • 如何从 C# 中的 dataTable.Select( ) 查询中删除单引号?

    所以我有一个经销商名称列表 我正在我的数据表中搜索它们 问题是 一些傻瓜必须被命名为 Young s 这会导致错误 drs dtDealers Select DealerName dealerName 所以我尝试替换字符串 尽管它对我不起作
  • ComboBox DataBinding 导致 ArgumentException

    我的几个类对象 class Person public string Name get set public string Sex get set public int Age get set public override string
  • 查找进程的完整路径

    我已经编写了 C 控制台应用程序 当我启动应用程序时 不使用cmd 我可以看到它列在任务管理器的进程列表中 现在我需要编写另一个应用程序 在其中我需要查找以前的应用程序是否正在运行 我知道应用程序名称和路径 所以我已将管理对象搜索器查询写入
  • 当一组凭据下的计划任务启动的进程在另一组凭据下运行另一个程序时,Windows 是否有限制

    所以我有一个简单的例子 其中我有应用程序 A 它对用户 X 本地管理员 有一些硬编码的凭据 然后它使用硬编码的绝对路径启动带有这些凭据的应用程序 B A 和 B 以及 dotnet 控制台应用程序 但是它们不与控制台交互 只是将信息写入文件
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 在Linux中,找不到框架“.NETFramework,Version=v4.5”的参考程序集

    我已经设置了 Visual studio 来在我的 Ubuntu 机器上编译 C 代码 我将工作区 我的代码加载到 VS 我可以看到以下错误 The reference assemblies for framework NETFramewo
  • 使用valgrind进行GDB远程调试

    如果我使用远程调试gdb我连接到gdbserver using target remote host 2345 如果我使用 valgrind 和 gdb 调试内存错误 以中断无效内存访问 我会使用 target remote vgdb 启动
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • IQueryable 单元或集成测试

    我有一个 Web api 并且公开了一个端点 如下所示 api 假期 name name 这是 Web api 的控制器 get 方法 public IQueryable
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • WebBrowser.Print() 等待完成。 。网

    我在 VB NET 中使用 WebBrowser 控件并调用 Print 方法 我正在使用 PDF 打印机进行打印 当调用 Print 时 它不会立即启动 它会等到完成整个子或块的运行代码 我需要确保我正在打印的文件也完整并继续处理该文件
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 堆栈是向上增长还是向下增长?

    我在 C 中有这段代码 int q 10 int s 5 int a 3 printf Address of a d n int a printf Address of a 1 d n int a 1 printf Address of a
  • 我可以在“字节数”设置为零的情况下调用 memcpy() 和 memmove() 吗?

    当我实际上没有什么可以移动 复制的时候 我是否需要处理这些情况memmove memcpy 作为边缘情况 int numberOfBytes if numberOfBytes 0 memmove dest source numberOfBy
  • 如何减少具有多个单元的 PdfPTable 的内存消耗

    我正在使用 ITextSharp 创建一个 PDF 它由单个 PdfTable 组成 不幸的是 对于特定的数据集 由于创建了大量 PdfPCell 我遇到了内存不足异常 我已经分析了内存使用情况 我有近百万个单元格的 1 2 在这种情况下有
  • Objective-C / C 给出枚举默认值

    我在某处读到过关于给枚举默认值的内容 如下所示 typedef enum MarketNavigationTypeNone 0 MarketNavigationTypeHeirachy 1 MarketNavigationTypeMarke
  • 是否可以在不连接数据库的情况下检索 MetadataWorkspace?

    我正在编写一个需要遍历实体框架的测试库MetadataWorkspace对于给定的DbContext类型 但是 由于这是一个测试库 我宁愿不连接到数据库 它引入了测试环境中可能无法使用的依赖项 当我尝试获取参考时MetadataWorksp
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string

随机推荐

  • 控制加速度直到到达某个位置的算法

    我有一个可以移动的点 在一维 并且我需要它平滑地移动 所以我认为它的速度必须是一个连续函数 我需要控制加速度 然后计算它的速度和位置 该算法对我来说似乎并不明显 但我想这一定是一个常见问题 我只是找不到解决方案 Notes 对象在移动时的最
  • Python - 将 set-cookies 响应转换为 cookie 字典

    如何转换response set cookie 输出字符串来自httplib2回应像 cookie1 xxxyyyzzz Path Expires Wed 03 Feb 2015 08 03 12 GMT Secure HttpOnly c
  • GLUT 退出重新定义错误

    在我的简单 OpenGL 程序中 我收到以下有关退出重新定义的错误 1 gt c program files microsoft visual studio 8 vc include stdlib h 406 error C2381 exi
  • Android Studio 3 库模块和功能模块的区别

    Android Studio 3 中至少有两种新的模块类型 首先是Instant app module第二个是feature module With Instant App module这是很明显的但是feature module从我的角度
  • arrayWillChange 中“无法调用未定义的‘销毁’方法”

    我有一个非常标准的数组 模板关系设置 但是当我将一个新项目推入数组时 我得到了上面提到的内容Cannot call method destroy of undefined错误在arrayWillChangeEmber源码的方法 for id
  • 将格式化日期转换回unix

    我将使用哪个函数将自定义格式的日期转换回 Unix 纪元时间 例如 Ymd gt U 我在看date U strtotime 20140525 但我不确定如何适应原始格式Ymd 该函数如何知道输入格式是 YYYYMMDD 因为它看起来有效
  • 如何将 Haskell 转换为 F#?

    我正在尝试通过翻译我很久以前编写的一些 Haskell 代码来学习 F 但我陷入了困境 percent Int gt Int gt Float percent a b fromInt a fromInt b 100 freqs String
  • 跨多个线程的 Java 日志记录

    我们有一个使用线程的系统 以便它可以同时并行处理不同的功能 我们希望找到一种方法将特定 事务 的所有日志条目绑定在一起 通常 人们可能会使用 threadName 将它们收集在一起 但显然这在多线程情况下会失败 如果没有通过每个方法调用传递
  • 使用 C++ 登录到 Windows 上的事件查看器 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在我的 C 应用程序上使用日志 但是 我想使用 Windows 10 事件查看器 而不是文本文件 我
  • 如何将“捐赠”按钮集成到印度的网站中?

    我们正在为印度的慈善信托基金开发一个网站 为此 我们需要在网站上添加一个 捐赠 按钮 供任何想要通过支付网关向慈善机构捐赠的人使用 然而 Paypal 和 Google Wallet Google Checkout 都限制在印度使用 捐赠
  • 杰克逊:将对象视为原始对象

    我有一门或多或少是围绕双精度型的包装类 当我通过 Jackson 序列化我的类时 我将收到类似以下内容的信息 value 123 0 我基本上希望发生的是 杰克逊只给我 123 0 0 如果我可以扩展 Number 我的问题就会得到解决 但
  • 用每列的组平均值填充 NaN [重复]

    这个问题在这里已经有答案了 我知道fillna 方法可用于在整个数据框中填充 NaN df fillna df mean fill with mean of column 如何将平均值计算限制为 NaN 所在的组 和列 Exemple im
  • ng-if="true" + data-ng-if="true" 计算结果为 false?

    事实是 如果你使用ng if truthyValue and data ng if truthyValue 里面一个html元素使用角JS 1 6 受影响的元素不会在DOM 即使您使用 这也是如此ng if and data ng if与b
  • ActionScript 的 File.upload 不适用于 iOS 设备的 Air SDK

    我尝试使用 ActionScript 的 File upload 在 Air SDK for iOS 环境中上传文件 但 File upload 无法正常工作 调用 File upload 后 不会执行有关文件上传的处理程序 也不会捕获任何
  • Node.js 12 的 TypeScript tsconfig 设置?

    最佳的 TypeScript 是什么tsconfig用于输出将在 Node js 12 上运行的代码的设置 从 Node js 开始12 0 0 100 支持ES2019 如果您知道您的目标是该版本或更高版本 则最佳配置将如下所示 modu
  • 为什么 TypeScript 中受保护的成员可以被公共成员覆盖?

    我是 Typescript 的新手 我尝试在本文中使用 TypeScript 进行一些尝试操场 http www typescriptlang org play 我注意到在 TypeScript 中 基类中的受保护成员可以被公共成员覆盖 c
  • 如何创建 pip 可安装项目?

    如何创建 pip 可安装项目 如何注册 pip 所有项目都应该具有哪些元数据配置 以便允许集成和轻松导入 或者 如果你感觉很奇特 阅读 lazy sudo easy install PasteScript paster create myn
  • 实体框架 4 Visual Studio 2008

    我一直在四处寻找并试图查看 Entity Framework 4 是否可以在 Visual Studio 2008 下运行 但找不到任何对它的引用 可以让 EF4 在 VS2008 上运行吗 On the ADO NET 实体框架团队博客
  • 动画同步、光标和突出显示

    所以我几乎有了我的code http jsfiddle net bplumb PBFWV 9 按照我想要的方式工作 但无法让我的动画正确同步 我正在尝试对光标进行动画突出显示文本 然后单击按钮 问题是光标要么太慢 要么太快 我正在尝试做这个
  • C 语言快速联合实现中的分段错误(核心转储)

    include