我想知道在读取和写入文件时如何格式化文本。所以我在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,这不是一个角色。
但为什么输出中有一个空行?
答案 0 :(得分:2)
为什么输出中有空行
为格式化行添加分隔符,如下所示,以帮助您了解正在发生的事情:
int i;
while((i = fgetc(fptr)) != EOF) {
printf("'%c' - %d\n",i,i);
}// ^ ^
现在,-1
的最后一行将会消失,因为我们在进入循环体之前检查EOF
;这比调用feof
(why?)更好。
“空行”将如下变化:
' ' - 32
'
' - 10
使用分隔符很容易看出32对应于一个空格,而10对应于换行。