-2

これが私の問題です。出力ファイルは、次のように 7 行です。

Dinda
Jane
is
so
beautiful
and
handsome.

出力ファイルの行数を読み取るよう求められます。ただし、2 行は 1 行しかカウントされません。したがって、このプログラムの正確な行数は 4 行 (最後の 1 行を含む) である必要があります。一度に 2 行を読むにはどうすればよいですか? これは私がこれまでに得たものです。

#include<stdio.h>
main()
{
    FILE *fp;
    char filename[25];
    char c[25][25];
    int a;

    clrscr();

    printf("Enter File Name: ");
    gets(filename);

    if(filename==NULL)
    {
        printf("\nERROR! File Doesn't Exist!");
    }
    else
    {
        fp=fopen(filename,"r");

        while(!feof(fp))
        {
            fgets(&c,sizeof(c),fp);
            printf("%s",c);
            if(strlen(c))
            {
                a++;
            }
        }

        printf("The Number of Words are: %d",a);
        fclose(fp);
        getch();
    }
}
4

4 に答える 4

0

次のようなことを試してください:

char c = getc(fp);
while (c != EOF) {
    if (c == '\n') a++:
    c = getc(fp);
}

 printf("Number of line is %d", (a + 1)/2); // (the +1 is for the last line)
于 2014-09-07T10:00:08.287 に答える
0
fp = fopen(filename,"r");
int flag = 0
ch = getc(fp)
while( ch != EOF)
{
    if( ch == '\n')
    {
        flag++;
    }
    ch = getc(fp);
}
flag = (flag+1)/2;

コードのelse部分でこのコードを試してください..

一度に 1 文字ずつ取得し、それが改行文字かどうかを比較します。改行文字の場合、フラグ変数をインクリメントします。最後に、ファイル内のすべての文字がトラバースされた後。フラグ値を半分にします。あなたが望むように..

于 2014-09-07T10:01:28.633 に答える