-2

私はプログラムを持っています:

#include <stdio.h>
#include <string.h>
// ne menuvaj ovde
void wtf() {
    FILE *f = fopen("text.txt", "w");
    char c;
    while((c = getchar()) != EOF) {
        fputc(c, f);
    }
    fclose(f);
}
int main() {
    wtf();
    FILE *vlezna;
    vlezna=fopen("text.txt","r");

    float words=0,lines=0,average=0;
    int counter=0;
    char ch;
    while((ch=fgetc(vlezna))!=EOF)
    {
        if(ch==' ')
            words++;
        if(ch=='\n');
        {
            words++;lines++;
        }
    }
    average=words/lines;
    printf("%f",average);
    fclose(vlezna);
    vlezna=fopen("text.txt","r");
    while((ch=fgetc(vlezna))!=EOF)
    {   words=0;
        if(ch==' ')
            words++;
            if(ch=='\n')
            {
                words++;
                if(words<average) counter++;
            }
    }
    fclose(vlezna);
    printf("%d",counter);
}

したがって、最初の関数がファイルに書き込むと思います。しかし、ファイルを最初に作成する必要があると思いますが、方法がわかりません(新しいテキストドキュメントを右クリックする場合を除く)。また、ファイルの先頭にポインターを返す方法がわからなかったので、ファイルを閉じて、最初にポインターが返されると仮定して再度開きましたか?

4

2 に答える 2

2

fopenオプションが の場合、ファイルが存在しない場合は作成します"w"
ここでドキュメントを読んでください: http://www.cplusplus.com/reference/cstdio/fopen/

于 2013-08-19T12:53:25.143 に答える
1

作成する必要はありません。のマニュアルページの場合fopen:

``w''   Truncate to zero length or create text file for writing.  The stream is positioned at the
        beginning of the file.

ファイル ポインタを設定するには、 を使用しますfseek。ただし、読み取り書き込みには、異なるオープン フラグが必要です。

于 2013-08-19T12:52:29.267 に答える