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行的段故障错误内存.我错过了什么?
你的路线
if( fp = NULL)
Run Code Online (Sandbox Code Playgroud)
正在分配NULLto 的值fp,而不是比较.
你应该使用
if( fp == NULL)
Run Code Online (Sandbox Code Playgroud)
93号线
if( fp = NULL )
将fp分配为NULL,而不是将其与NULL进行比较。使用
if( fp == NULL )
代替。
正如netcoder指出的那样,您的编译器应对此发出警告。if (NULL == fp)如果您不小心将比较交换给赋值,也可以用表格形式编写测试以生成编译器错误。(请注意,有些人可能会觉得这种编码风格令人反感,因此在代码审查中可能会引起一些抱怨!)