我是一個總C n00b試圖教自己C關K &河我的問題是一種尷尬的初級。好的,這裏是:我無法使用getchar獲得程序來提供我期望的輸出。如果您碰巧碰到了K &,我會被困在練習1.13中。問題是,「編寫一個程序來打印輸入中單詞長度的直方圖」,由於我遇到了這個問題,我甚至無法處理橫向版本。如何使用getchar運行程序?
我在XP上使用Dev-C++(mingW編譯器)並在命令行下運行程序。我的問題是,當我嘗試運行我的程序時,它會等待我輸入要掃描的字符,但是當我完成輸入並按Enter時,它不會執行任何操作。我希望它能夠按照我的預期打印直方圖。實際上,它似乎不計算字長,因爲正如代碼中所見,當我嘗試打印ctr數組中的內容以查看它是否包含任何內容時,什麼都不打印。
我是如此的n00b,我不知道它是我的代碼還是錯誤的命令行。但我懷疑這是系統的問題,因爲當我嘗試編譯並運行a model program時,會發生同樣的情況。輸入輸入,按回車,沒有任何反應。如果我按Ctrl-C,有時它會吐出一個或兩個看起來不像模型輸出的星號。其他時候,它不會做任何事情(只是回到提示)。
這是我的練習代碼。我花了整整一天的時間,質疑我繼續進行編程的能力。我真的很感激,如果有人能讓我擺脫這個漏洞!
另外,我還有一個關於我上面提到的模型程序的問題,但我想我應該在它自己的問題中發佈它。謝謝所有:)
#include <stdio.h>
//#define 1 IN
//#define 0 OUT
int main() {
//start w/ state = OUT
int c = 0;
// int state = OUT;
int len = 0;
int ctr[12];
int i, j;
i = j = 0;
for (i = 0; i <12; i++)
ctr[i] = 0;
while ((c = getchar()) != EOF)
if (c != ' ' && c != '\t' && c != '\n') {
// state = IN;
len++;
printf("%d", len);
}
else {
ctr[len]++;
len = 0;
}
for (i = 0; i <12; i++)
printf("%d\n", ctr[i]);
for (i = 0; i <12; i++) {
printf("%d\n", i);
for (j = 0; j <= ctr[i]; j++)
printf("-");
printf("\n");
}
return 0;
}
與你的問題沒有關係,但考慮拋棄DevC++。它是越野車,不再被開發。一個很好的FOSS替代方案是http://www.codeblocks.org上的Code :: Blocks。但正如我所說的,這與您的問題無關 - 切換IDE不會解決問題。 – 2010-01-04 22:22:27
我有CB一段時間。你不會相信,但是有一段時間我只是不知道如何使用它特別是調試功能:在點擊某個錯誤的按鈕後,它停止向我顯示我的代碼中的錯誤列表。經過幾天的文檔挖掘,我放棄了,回到了唯一一個我知道我的方式的IDE:D – 2010-01-04 22:33:25
Anita,很抱歉聽到這個消息。你有沒有在http://forums.codeblocks.org上詢問你的問題。或者你甚至可以嘗試在SO上發佈一個問題。坦率地說,任何事情都必須比DevC++更好。 – 2010-01-04 23:29:57