我在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);
?
答案 0 :(得分:2)
getc()
返回文件句柄中当前位置的字节的整数值,然后将该位置前进一个字节。
putchar()
比printf
简单。
答案 1 :(得分:0)
谷歌搜索1分钟就得到了这个。
引用参考文档(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
强制转换为int
或EOF
的字符。
从文件流中读取
byte
/wchar_t