0

私はCプログラミングに不慣れで、現在、入力ストリーム内の単語と行をカウントし、2つの合計を標準出力に出力できるCプログラムを作成する方法を自分自身に教えようとしています。

私が実際にやろうとしているのは、私が離れていると感じる単語の定義に応じて、プログラムに行数と単語数をカウントさせることです。

空白、タブ、改行、ハイフン、またはコロンを除外する単語が必要です。プログラムに結果(単語と行)を小数として出力させている間。

#include<stdio.h>

int main()
{
    int iochar;
    int words;
    int lines;

    printf("Enter something here:\n\n");

    while ((iochar = getchar ()) !=EOF)
    {
        if((iochar == ' ') || (iochar == '\t') || (iochar == '\n'))

        putchar(iochar);
    }

    return 0;
}

私はこのプログラムに完全に参加していませんか?

4

3 に答える 3

0

エラーメッセージは次のとおりです。

Test.c:20:1: エラー: 入力の最後に宣言またはステートメントが必要です

が欠落しているため、コンパイルされません}

このようにコードを適切にインデントしていれば、間違いを見つけることができたはずです。

#include<stdio.h>

int main() {

   int iochar;
   int words;
   int lines;

    printf("Enter something here:\n\n");

    while ((iochar = getchar ()) !=EOF)
    {
       if((iochar==' ')||(iochar=='\t')||(iochar=='\n'))
       {
       putchar(iochar);
       iochar = getchar();
       }
       return 0;

    }

読みやすさの重要性のさらに別の例:)

于 2012-09-25T22:17:02.347 に答える
0

あなたの「8列のフィールドで数字を右揃えにしようとしています...」の後、あなたが何を言おうとしているのか理解できません:(

int words = 0;
int lines = 0;
char buffer[1024];
while(fgets(buffer, sizeof buffer, stdin))
{
    lines++;
    if(buffer[0] == '\n')
        continue;
    char *tmp = buffer-1;
    while(tmp = strchr(tmp+1, ' '))
        words++;
    words++; /* count last word before \0*/
}

printf("lines: %d, words: %d\n", lines, words);

それはあなたが必要/欲しいものですか?

于 2012-09-25T22:09:15.240 に答える