69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
//d:\\text.txt文本编辑器文件内容为:
//abcde(换行)
//f
//补充:window文本编辑器中的“换行效果”实际上是\r\n两个字符的作用
//在C中如果以"r" 文本模式打开window文本编辑器,会自动转换为\n一个字符来表现换行
// 如果以"rb"二进制模式打开window文本编辑器,将不会转换仍然为\r\n两个字符
//如果以下程序打开文件方式更改为"rb",则一切正常
//如果"r"方式打开,ach内容为什么有两个'\n'字符???
FILE *fp = fopen("d:\\text.txt", "r");
fseek(fp, 0L, SEEK_END); //令fp->“文件当前位置指针” 指向“文件”末尾
long last = ftell(fp); //计算“文件”所含字节数
char ach[8];
int i = 0;
//依次从“文件”中读取各个字符,并存放到ach数组中
for (long ct = 0L; ct < last; ct++)
{
fseek(fp, ct, SEEK_SET);
ach[i++] = getc(fp); //ach 内容却为:'a','b','c','d','e','\n','\n', 'f'
}
fclose(fp);
fp = fopen("d:\\text.txt", "r");
fseek(fp, 0L, SEEK_SET);
char ach2[8];
fread(ach2, 1, 8, fp); //ach2 内容为: 'a','b','c','d','e','\n','f'
fclose(fp);
return 0;
}