【问题标题】:segmentation fault (core dumped) error when using time function使用时间函数时出现分段错误(核心转储)错误
【发布时间】:2014-01-05 21:28:54
【问题描述】:

您好,我是 Linux 和 c 编程的新手,所以这可能是个愚蠢的问题,但我找不到答案。

我正在写一个家庭作业,他们希望我使用 time() 函数在程序结束时打印执行时间,所以当我在程序中使用该函数时,我收到消息 segmentation fault (core dumped) 并且当我删除它时该程序运行正常。 然后我在下面的代码中创建了一个测试文件:

#include <stdio.h>

int main()
{
    time();
    return 0;
}

我得到了同样的错误信息。

也试过了:

#include <stdio.h>

int main()
{
    time(NULL);
    return 0;
}

#include <stdio.h>
#include <time.h>

int main()
{
    time_t t;

    time(&t);
    return 0;
}

得到了同样的错误。

那么我做错了什么?

谢谢

【问题讨论】:

  • 为我工作。你是怎么编译的?你确定你运行的是正确的程序吗?
  • 第一个程序无法编译,因为您缺少参数。
  • 以上所有程序都为我编译和执行中的问题
  • 我正在使用 gcc "c file" -o "output file" 在终端中编译
  • @TheMask 严格来说,它会因为缺少包含 而编译,除非-Wall -Werror 或类似物用于使警告致命。但这并不意味着程序变得正确;)

标签: c linux ubuntu segmentation-fault


【解决方案1】:

在您的前两个示例中,您忘记包含 time.h。这就是这些示例中分段错误的原因。如果您使用 gcc,请尝试使用 -Wall 进行编译(这会打开所有警告)。您应该会收到一条警告,指示函数“time”的隐式声明 - 换句话说,您忘记包含 time.h。

但是,您的最后一个示例对我来说效果很好。但是,如果您不断遇到分段错误,请尝试使用 gdb 进行调试。

【讨论】:

    【解决方案2】:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(void)
    {
      time_t now;
      time(&now);
    
      printf("%s", ctime(&now));
    
      return EXIT_SUCCESS;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多