【问题标题】:fprintf segfaultfprintf 段错误
【发布时间】:2012-10-15 14:48:33
【问题描述】:
  char* output= (char*) argv[2];
 92     fp = fopen(output, "w");
 93     if( fp = NULL )
 94     {
 95         printf("writing output failed");
 96         return 0;
 97     }
 98     fprintf(fp,"hello");

这导致第 98 行的 seg fault exc bad memory。 我错过了什么??

【问题讨论】:

  • 您能接受对您认为有用的问题的答案吗?

标签: c segmentation-fault printf


【解决方案1】:

你的线路

if( fp = NULL)

NULL 的值分配给fp,而不是进行比较。

你应该使用

if( fp == NULL)

【讨论】:

  • 如果启用了警告,GCC 和 MSVC 都应该警告你。
  • @netcoder:好点; lint 也将帮助您找到此类问题。
【解决方案2】:

第 93 行

if( fp = NULL )

将 fp 分配给 NULL 而不是将其与 NULL 进行比较。使用

if( fp == NULL )

改为。

正如 netcoder 所指出的,您的编译器应该对此发出警告。如果您不小心将比较换成赋值,您也可以以 if (NULL == fp) 的形式编写测试以生成编译器错误。 (请注意,有些人可能会觉得这种编码风格令人反感,因此可能会在代码审查中引起一些抱怨!)

【讨论】:

    猜你喜欢
    • 2016-10-22
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    相关资源
    最近更新 更多