[英]printf doesn't work, even with newline and fflush()
我正在用gcc
編譯以下C代碼。 在編譯期間或運行時不會引發任何錯誤。 我通過與代碼運行gdb
,並在給出的答案sum
正確末,尚printf()
不顯示在屏幕上任何東西。 我嘗試了fprintf()
, printf()
和fflush()
各種組合,但是沒有用。
我需要更改什么,以便程序將結果打印到stdout
?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num = 9;
int i, sum; i = 1, sum = 0;
while (i < 2 * num) {
sum = sum + i * i;
++i;
}
printf("sum: %d\n", sum);
fflush(stdout);
return 0;
}
該代碼是正確的,對於任何符合要求的實現,應打印sum: 1785
。
這是一個猜測( 更新:原來是正確的 ),但是...
您已將源文件命名為test.c
,並使用以下命令進行編譯:
$ gcc test.c -o test
(或類似內容)並執行以下命令:
$ test
不會產生任何輸出。
問題在於test
是標准的Unix命令(在某些shell中也是內置命令)。 在外殼程序中鍵入命令名稱時,它首先查找內置命令,然后在$PATH
環境變量中指定的目錄中查找可執行文件。
要在當前目錄中執行命令,請在名稱前加上./
:
$ ./test
sum: 1785
$
這適用於當前目錄中的任何命令。 有太多內置命令,您無法合理避免與它們發生沖突。 通過輸入./whatever
養成在當前目錄中運行可執行文件的習慣, ./whatever
意味着名稱沖突並不重要。
(不要被誘惑加入.
您的前$PATH
;這是危險想想會發生什么,如果你cd
到一個目錄和類型ls
,如果恰好是一個惡意的ls
。命令有)
您的程序沒有任何問題。 它必須工作。 嘗試通過重定向運行它:
./a.out > myout
..看看是否有任何輸出。 如果不是,我懷疑某種標准庫不匹配存在問題。
檢查的另一種方法是使用SUN C編譯器而不是gcc進行編譯,然后查看是否可行。 如果是這樣,則gcc是元凶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.