用C语言阅读文件,理论问题

时间:2014-09-14 14:20:58

标签: c

我在C语言中获得了一个关于在文件中读写的任务。 我在不同的网站上阅读了不同的代码以及他们的解释。但有一个问题仍然没有答案!以下是我在不同网站上找到的一般代码:

#include <stdio.h>
void main()
{
   FILE *fp;
   int c;
   fp = fopen("E:\\maham work\\CAA\\TENLINES.TXT","r");
   c = getc(fp) ;
    while (c!= EOF)
     {
       putchar(c);
       c = getc(fp);
     }
    fclose(fp);
 }

我的问题很简单明了。

在行c = getc(fp) ;中C接收的是什么?地址?字符? ASCII码??什么?

while (c!= EOF)
{
   putchar(c);
   c = getc(fp);
}

这里怎么能够逐个字符地读取文件?没有增量运算符......指针“fp”是否有助于读取代码?

最后,为什么putchar(c);用于打印?为什么不使用printf("%C", c);

2 个答案:

答案 0 :(得分:2)

getc()返回文件句柄中当前位置的字节的整数值,然后将该位置前进一个字节。

putchar()printf简单。

答案 1 :(得分:0)

谷歌搜索1分钟就得到了这个。

  1. C ++参考
  2. 教程要点
  3. 维基百科

引用参考文档(C++ here,但在C语言中可能非常相似)。

int getc ( FILE * stream );
  

从流中获取字符返回指定流的内部文件位置指示符当前指向的字符。然后,内部文件位置指示器将前进到下一个字符。

     

如果在调用时流位于文件末尾,则该函数返回EOF并设置流的文件末尾指示符(feof)。

     

如果发生读取错误,该函数将返回EOF并设置流的错误指示符(错误)。

     

getc和fgetc是等效的,除了getc可以在某些库中实现为宏。有关直接从stdin读取的类似功能,请参见getchar。

进一步的阅读使我们:

  

成功后,将返回读取的字符(提升为int值)。

     

返回类型为int,以适应特殊值EOF,这表示失败:如果位置指示器位于end-of-file,则函数返回EOF,然后返回设置流的eof指标(feof)。   如果发生其他一些读取错误,该函数还会返回EOF,但会设置其错误指示符(错误)。


Here我们阅读

  

此函数返回在文件或错误结束时作为unsigned char强制转换为intEOF的字符。


wikipedia

  

从文件流中读取byte / wchar_t