2012-10-15 19 views
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"); 

这是导致段错误exc 98行内存不良记忆。 我在想什么?fprintf段错

+0

可以接受问题的答案,你已经找到有用吗? – Dancrumb

回答

4

线93

if(fp = NULL)

被分配FP为NULL,而不是比较为NULL。使用

if(fp == NULL)

代替。作为netcoder指出,你的编译器应该警告你这个。如果您意外地交换了赋值比较,您也可以以if (NULL == fp)的形式编写测试以生成编译器错误。 (请注意,有些人可能会发现编码反感,因此它可能产生在代码审查一些抱怨的这种风格!)

+0

哦,愚蠢的错误。非常感谢你 – kiki

8

你行

if(fp = NULL) 

NULL价值分配,而不是比较fp

您应该使用

if(fp == NULL) 
+1

GCC和MSVC都会警告你,如果警告是启用的。 – netcoder

+0

@netcoder:好点; 'lint'也会帮助你找到这样的问题。 – Dancrumb