0
  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 bad memory。我错过了什么?

4

2 回答 2

8

你的线路

if( fp = NULL)

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

你应该使用

if( fp == NULL)
于 2012-10-15T14:50:24.060 回答
5

93 号线

if( fp = NULL )

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

if( fp == NULL )

反而。

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

于 2012-10-15T14:50:08.147 回答