以字符方式读取文件

时间:2018-04-09 16:55:50

标签: c++

我想知道在读取和写入文件时如何格式化文本。所以我在g ++编译器上尝试了以下代码。另外,我正在使用< bits / stdc ++。h>图书馆。

while(!feof(fptr)) {                      //fptr is the pointer to the input file
    int i = fgetc(fptr);
    printf("%c - %d\n",i,i);
}

输入文件包含以下文本。

spaces 
and newlines

我得到的输出就是这个。

s - 115
p - 112
a - 97
c - 99
e - 101
s - 115
  - 32

 - 10
a - 97
n - 110
d - 100
  - 32
n - 110
e - 101
w - 119
l - 108
i - 105
n - 110
e - 101
s - 115
� - -1

我理解最后一行是因为EOF,这不是一个角色。

但为什么输出中有一个空行?

1 个答案:

答案 0 :(得分:2)

  

为什么输出中有空行

为格式化行添加分隔符,如下所示,以帮助您了解正在发生的事情:

int i;
while((i = fgetc(fptr)) != EOF) {
    printf("'%c' - %d\n",i,i);
}//         ^  ^

现在,-1的最后一行将会消失,因为我们在进入循环体之前检查EOF;这比调用feofwhy?)更好。

“空行”将如下变化:

' ' - 32
'
' - 10

使用分隔符很容易看出32对应于一个空格,而10对应于换行。