C语言 fprintf segfault


  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 错误 exc 内存损坏。我错过了什么??

你的行

if( fp = NULL)

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

你应该使用

if( fp == NULL)

第 93 行

if( fp = NULL )

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

if( fp == NULL )

相反。

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

相关内容

  • 没有找到相关文章

最新更新