fprintf段错误

kik*_*iki 0 c printf segmentation-fault

  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");
Run Code Online (Sandbox Code Playgroud)

这导致了第98行的段故障错误内存.我错过了什么?

Dan*_*umb 8

你的路线

if( fp = NULL)
Run Code Online (Sandbox Code Playgroud)

正在分配NULLto 的值fp,而不是比较.

你应该使用

if( fp == NULL)
Run Code Online (Sandbox Code Playgroud)


sim*_*onc 5

93号线

if( fp = NULL )

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

if( fp == NULL )

代替。

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