2

The C Programming Languageを読んでいます。これは、空白、タブ、および改行をカウントするプログラムを作成するという質問です。\nを改行に、\tをタブに使用できるようになりましたが、空白については初めて聞きました。空白の本当の意味は何ですか?改行とタブについては、次のプログラムをコンパイルしました。

#include <stdio.h>

/*  program to count blanks, tabs, and newlines */
main (){
    long blanks, tabs, newlines, input;

    blanks = 0;
    tabs = 0;
    newlines = 0;
    input = 0;
    while ((input = getchar()) != EOF)
        if (input == '\n')
            ++newlines;
        else if (input == '\t')
            ++tabs;

    printf("Total newlines: %ld\nTotal Tabs: %ld", newlines, tabs);
}
4

8 に答える 8

5

空白 = スペース ( ' ')

コードは機能しています{ }が、while ループの本体に追加することを強くお勧めします。

于 2012-06-21T14:21:33.907 に答える
0

ほとんどの場合、空白は単なるスペースです。isblank()おそらく、分類に役立つ関数を調べる必要があります。

于 2012-06-21T14:20:57.070 に答える
0
#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("Type and Press Enter. CTRL-Z for EOF:\n");
int c;
int b = 0;
int t = 0;
int nl = 0;

while((c = getchar())!=EOF){

    putchar(c);
    if(c=='\t')
        ++t;

    if(c==' ')
        ++b;
    if(c=='\n')
        ++nl

}

printf("\n%d and %d\n",b,t,nl);


return 0;

}

3 つの値すべてを知る必要があるため、else if を追加しましたが、ここでは必要ありません。

于 2013-12-10T12:28:54.180 に答える
0

スペース文字「 」を意味していると確信しています。

ASCII コードについては、こちらを参照してください。

http://www.asciitable.com/

また、0x13 はキャリッジ リターンです。ファイルのフォーマットによっては、改行は実際にはそれほど単純ではありません。

http://en.wikipedia.org/wiki/Newline

そして、他の人が言ったように、あなたは関数の使用を検討したいかもしれません

http://www.cplusplus.com/reference/clibrary/cctype/

于 2012-06-21T14:22:47.270 に答える
0

空白は改行の後に改行が続くと思います

        #include<stdio.h>
        int main()
        {
            int c,nl,nb,nt;
            nl = 0;
            nb = 0;
            nt = 0;
            int flag =1;

            while((c = getchar()) != EOF){
                if(c == '\n')
                {
                    ++nl;
                    if(flag)
                    ++nb;
                    flag = 1;  
                }
                else
                flag = 0;     

                if(c == '\t')
                ++nt;     
            }
            printf("lines : %d, tabs: %d, blanks: %d", nl, nt, nb);     

            return 0;
        }
于 2015-06-12T20:12:06.367 に答える
0

私が思う解決策は次のとおりです。

#include <stdio.h>
main() {
    int c, nl, nt, nb;

    nl = 0;
    nt = 0;
    nb = 0;


    while((c = getchar()) != EOF){
        if (c == '\n')
            ++nl;

        if (c == '\t')
            ++nt;

        if (c == ' ')
            ++nb;
        }    

    printf("Blanks: %d\nNewlines: %d\nTabs: %d\n", nl, nt, nb);  }
于 2020-01-06T17:07:32.823 に答える
0

以下のコードを見つけてください。これにより、完全な質問に対する解決策が得られます。

#include <stdio.h>

/* Count blank, tabs, and new lines */

main ()
{
    long c, b, t, l;    /* c for characters, b for blanks, t for tabs, l for lines */

    b = 0;
    t = 0;
    l = 0;

    while ( ( c = getchar() ) != EOF )
    {

        if ( c == '\n')
        ++l;
        if ( c == '\t')
        ++t;
        if ( c == ' ')
        ++b;
    }

    printf ("\n No of blanks : %d \n", b);
    printf ("\n No of tabs : %d \n", t);
    printf ("\n No lines in input: %d \n", l);
}
于 2015-06-01T11:43:21.053 に答える