2012-06-07 218 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