2

我想计算文件中的字母数。我已经尝试使用 Windows 和 Linux 测试编辑器编写文件,但两者都给出相同的值 (7)。该文件有 5 个字符('P','2','\n','#','\n'),为什么 ftell 返回值 7 而不是 5?

int main(void){
    unsigned char *px=NULL;
        int c=0,size_px;
    FILE *arq;
    arq = fopen("test.txt","rb"); 
        px = (unsigned char*) malloc(100*sizeof(unsigned char));
        fseek(arq,0,SEEK_END); // go to the end of file
        size_px = ftell(arq); //count the letters
        fseek(arq,0,SEEK_SET);  // return to the begin of file
        fread(px,sizeof(unsigned char),size_px,arq);
        printf("|%s| QTY:|%d|",px,size_px);
}

Ps:即使ai从'rb'模式变为'r'模式,它也会继续给出答案7,尽管在第二种模式(r)中它会打印一些垃圾。该文件使用 Notepad++ 保存为 test.txt。有 '\n' 表示我按下了 Enter 按钮:

P2\n
#\n
4

1 回答 1

3

软件应用程序和操作系统通常表示带有一两个控制字符的换行符:

基于 ASCII 或兼容字符集的系统单独使用 LF(换行,'\n',0x0A,十进制的 10)或 CR(回车,'\r',0x0D,十进制的 13),或 CR 后跟LF (CR+LF, '\r\n', 0x0D0A)

于 2013-08-24T06:02:06.077 回答