2012-07-05 28 views
2

我需要編寫一個C程序,其中printf應返回負值。它應該是這樣的:如何強制printf在c中返回負值?

#include <stdio.h> 
int main() 
{ 
    int ret_val; 
    ret_val = printf(something); 
    printf("%d", ret_val); 
} 

這應該是一個負數(ret_val應該是負數)的輸出。做你printf

int ret = 0; 
ret = printf("%lc", (wint_t) -1); 
printf("%d\n", ret); 
+2

創建輸出錯誤,'printf'在失敗時返回負值。 – 2012-07-05 17:57:31

+1

聽起來很可疑。你在做什麼? – Wug 2012-07-05 17:58:27

+1

雖然特定於linux,但可以將stdout重定向到>/dev/full,寫入時會產生錯誤。雖然在調用fflush()之前可能不會顯示錯誤,或者在callign printf之前將stdout設置爲非緩衝。 – nos 2012-07-05 18:03:47

回答

4

調用編碼錯誤。例如,以只讀模式重新打開它

freopen("fff", "r", stdout); 
1

重定向stdout一個無效的句柄:

+0

這會導致第一個printf返回一個負值,但它無法滿足第二個printf輸出負數的規範,因爲第二個printf不能在沒有錯誤的情況下執行。 – 2012-07-05 19:12:56

+0

@Eric Postpischil:錯了。從來沒有這樣的「規範」。問題是關於使'printf'返回一個負值。期。 OP中的代碼示例只是一個「類似」的例子,它也可以通過再次將stdout重定向到一個文件來工作。 – AnT 2012-07-05 19:32:49

+0

提問者使用兩個printf語句顯示程序,並指定輸出應該是負數。 – 2012-07-05 19:45:20