深入理解c语言中读取文件中字符的scanf(),与getchar()

1.首先要理解文件中各个字符在内存中存放的方式(以可打印的ascll字符为例):每一个字符都占据着一个字节,包括空格换行符回车符等。在文件的最后是有一个EOF,代表着文件的结束。

我们在文件中用肉眼看到的换行实际上反映到内存中是一个换行符。换行符紧挨着的下一个字节保存的是下一行的第一个字符。

2.操作系统读取文件时,是有一个指针的,指针指向这些字符所在的字节。

3.getchar()函数读取操作系统的指针所在处的字符,并返回这个字符的ascll码(包括换行符)。然后指针指向下一个字节处,一直到遇到EOF后,开始一直读取EOF这个内存。

4.scanf(“%d”)函数不必多说,遇到读取整数,遇到空格换行回车等直接跳过,一直到遇到EOF

   scanf("%c")函数读取每一个ascll字符,包括回车和换行以及空格,一直到遇到EOF

  scanf("%s")函数读取字符串,并且跳过回车换行以及空格,一直到遇到EOF

 并且,以上 三个函数读完以后,指针指向遇到的那个回车换行或者空格,以如果立即用getchar函数来读的话,会读到这些字符。

顺便说一句,读到字符串s中以后,s是以'\0'结尾的。

但是用fgets函数读完以后,在'\0'之前,一般还有一个'\n',除非这一行就是文件的结尾。

你可能感兴趣的:(深入理解c语言中读取文件中字符的scanf(),与getchar())