2014-02-19 54 views
0

我正在嘗試使程序從標準輸入讀取字符,直到讀取EOF(文件結束標記)。ASCII /計數打印C程序?

而且該功能後,我有:

#include <stdio.h> 



int main(int agc, char *agv[]) { 
    int x; 
    int count = 0; 

    while ((x = getchar()) != EOF){ 
    count++; 
+3

老實說@BLUEPIXY,這很粗魯。我可能不會與這裏的任何人相提並論,但我正努力通過CS的介紹課程,而不必浪費金錢和學分,參加課程,因此我需要額外的幫助,我有一本介紹書,並且無需通過它講師有點困難。所以謝謝你缺乏幫助。 –

+0

我會推薦youtube視頻。有很多很好的編程教程視頻。通常這裏的問題是非常具體的,所以你的文章是有點在那裏... – thang

+0

這是重複刪除的問題,而不考慮評論和答案,這是粗魯的問題。 – BLUEPIXY

回答

0

在你main(),標線是函數的聲明,而不是函數調用。您可能需要用調用函數來替換它們。

int main(int argc, char *argv[]) { 
    int x; 
    int count = 0; 

    while ((x = getchar()) != EOF){ 
     count++; 
    } 
    prHeader(FILE *out); // Declaration 
    prCountStr(FILE *out, int code, char *str, int count); // Declaration 
    prCountChr(FILE *out, int code, char chr, int count); // Declaration 
    prTotal(FILE *out, int count); // Declaration 
    return 0; 
} 

你也將需要有一個數組(counters,因爲參數的緣故)的256個整數,全部初始化爲0,你的循環將遞增counters對應剛纔讀的字符的條目。幸運的是,getchar()爲每個可能的輸入字符返回一個正值。

在C中,你應該很少在頭文件中定義一個函數;在你的情況下,你不應該在頭文件中定義函數。聲明應該在那裏,但定義不應該在那裏。你應該有另一個源文件,大概common.c,它定義的功能。然後,您需要編譯包含main()函數和common.c的文件,並且您需要鏈接兩個目標文件以創建該程序。 (在短期內,您可以通過在頭文件中保留函數並簡單地編譯定義main()函數的代碼來避免這種情況,但這是顛覆頭文件的一部分。)大多數變量定義應該在common.c也不在common.h

你還有其他工作要做; BADFILE和相關的宏還沒有被使用。它也似乎你可能需要解析命令行選項。