从C中的文件计算未知数量的字符

fan*_*avu 2 c file

我正在寻找一种使用C语言计算文件中未知字符数的简便方法.谢谢你的帮助

Pot*_*ter 8

POSIX方式(可能你想要的):

off_t get_file_length( FILE *file ) {
    fpos_t position; // fpos_t may be a struct and store multibyte info
    off_t length; // off_t is integral type, perhaps long long

    fgetpos( file, &position ); // save previous position in file

    fseeko( file, 0, SEEK_END ); // seek to end
    length = ftello( file ); // determine offset of end

    fsetpos( file, &position ); // restore position

    return length;
}
Run Code Online (Sandbox Code Playgroud)

标准的C方式(迂腐):

long get_file_length( FILE *file ) {
    fpos_t position; // fpos_t may be a struct and store multibyte info
    long length; // break support for large files on 32-bit systems

    fgetpos( file, &position ); // save previous position in file

    if ( fseek( file, 0, SEEK_END ) // seek to end
        || ( length = ftell( file ) ) == -1 ) { // determine offset of end
        perror( "Finding file length" ); // handle overflow
    }

    fsetpos( file, &position ); // restore position

    return length;
}
Run Code Online (Sandbox Code Playgroud)

如果您想知道多字节字符的数量,您需要使用例如读取整个文件fgetwc.


sum*_*ame 5

FILE *source = fopen("File.txt", "r");
fseek(source, 0, SEEK_END);
int byteCount = ftell(source);
fclose(source);
Run Code Online (Sandbox Code Playgroud)