fprintf段错误

时间:2012-10-15 14:48:34

标签: c segmentation-fault printf

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

2 个答案:

答案 0 :(得分:8)

你的行

if( fp = NULL)

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

您应该使用

if( fp == NULL)

答案 1 :(得分:5)

第93行

if( fp = NULL )

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

if( fp == NULL )

代替。

正如netcoder所指出的那样,你的编译器应该警告你。您还可以使用if (NULL == fp)形式编写测试,以便在意外交换比较以进行分配时生成编译器错误。 (请注意,有些人可能会发现这种编码风格令人反感,因此可能会在代码审查中产生一些抱怨!)