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)
的形式编写测试,以便在不小心将比较交换为赋值时生成编译器错误。 (请注意,有些人可能会觉得这种编码风格令人反感,因此可能会在代码审查中产生一些抱怨!