我想计算文件中的字母数。我已经尝试使用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:即使我从'rb'变为'r'模式,它仍继续给出answear 7,尽管在第二种模式(r)它会打印一些垃圾。该文件使用Notepad ++保存为test.txt。 那里有'\ n',这意味着我按了按钮Enter:
P2\n
#\n
答案 0 :(得分:3)
软件应用程序和操作系统通常代表一个 带有一个或两个控制字符的换行符:
基于ASCII或兼容字符集的系统使用LF (换行,'\ n',0x0A,十进制10)或CR(回车,'\ r', 单独为0x0D,十进制为13,或CR后跟LF(CR + LF, '\ r \ n',0x0D0A)。