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错误内存。 我错过了什么?
答案 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)
形式编写测试,以便在意外交换比较以进行分配时生成编译器错误。 (请注意,有些人可能会发现这种编码风格令人反感,因此可能会在代码审查中产生一些抱怨!)