2012-06-07 173 views
0

首先,我会说我已经阅读下面的链接开始:调试断言失败fprintf中

fprintf debug assertion fail

我收到了同样的错误,他/她没有,但是我的是不是由于同样的道理。下面的代码,这是在C:

FILE * fp; 
fp = fopen("C:\ro_apps\IandQ.csv", "w"); 
fprintf(fp, "%f\n", (j+pTxWbHf110c->cAnalogOutputBuffer)->re); 

我得到美国的错误:

调试断言失败!

程序:(无关) 文件:F:\ DD \ vctgools \ crt_bld \ self_x86 \ CRT \ SRC \ fprintf.c 行:55

表达:(!STR = NULL)

我在另一个链接中看到有人说过在使用fprintf命令之前使用调试来查看文件是否打开。我的矿没有打开。任何提示或技巧?

谢谢!

+1

我没有答案,但什么样的恶作剧是'J + pTxWbHf110c-> '? – JoeFish

+3

您需要转义反斜杠:'“C:\\ ro_apps \\ ...”' –

+0

您发布的链接有答案。 –

回答

2

你的文件名是错误的。你必须逃离每反斜线\

fp = fopen("C:\\ro_apps\\IandQ.csv", "w"); 

你也应该经常检查是否fopen失败:

if(fp == NULL){ 
    perror("Couldn't open file: C:\\ro_apps\\IandQ.csv\n"); 
    return; 
} 
+0

非常诱惑-1为坏的错误信息。 'perror(path)' –

+0

@WilliamPursell:对不起,我用'fprintf(stderr,...)'完全忘了'perror'。 – Zeta

+0

感谢您对转义反斜杠的评论,我对C仍然比较陌生,并且从来没有使用过fopen。不知道我是如何错过它的时候,我简要地看了一下:)我继续并补充说,检查,它确实失败,我不知道为什么。我知道文件名是正确的。根据您在VS2010中的解决方案所在的位置,文件可以位于何处或无法位于哪里,是否有特殊的规则? – TZPike05