getw()函数用于从流中取得整数,其原型如下:
int getw(FILE *stream);
【参数】参数stream为要取整数的流。
【返回值】该函数返回从流中读取的整数。如果文件结束或出错,则返回EOF。
【实例】下面的实例演示了getw()函数的使用,采用该函数从流中获取整数,代码如下:
#include<stdio.h>
#include<stdlib.h>
#define FNAME "demo.txt"
int main(){
FILE *fp;
int word;
scanf("%d",&word);
fp = fopen(FNAME, "wb");
if(fp == NULL){
printf("Error opening file %s\n", FNAME);
exit(1);
}
putw(word, fp); // 将值放入文件
if( ferror(fp) ) printf("Error writing to file\n");
else printf("Successful write\n");
fclose(fp);
fp = fopen(FNAME, "rb");
if(fp == NULL){
printf("Error opening file %s\n", FNAME);
exit(1);
}
word = getw(fp); // 读取整数
if( ferror(fp) ) printf("Error reading file\n");
else printf("Successful read: word = %d\n", word);
fclose(fp);
unlink(FNAME);
}
程序先建立一个demo.txt文件,然后输入数字并写入文件,最后用getw()读取,并显示在控制台。
注意:putw()和getw()都是按二进制输入输出的。所以如果你用putw()输入数据到文件后以文本的方式打开看到的将都是乱码。
同样如果你在文本文件中输入了数字并保存,用getw()来读入的话读入的结果并不是你想象的那样,因为它是按二进制读的。
再看往文件中写入一个整数并读取的例子。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
int ch;
int len;
int i=0;
FILE* fstream;
/*w+ 打开可读写文件,若文件存在则文件长度清为零,
即该文件内容会消失。若文件不存在则建立该文件*/
fstream=fopen("test.txt","w+");
if(fstream==NULL)
{
printf("read file test.txt failed!\n");
exit(1);
}
/*getc从文件流中读取字符*/
while( (ch = getc(fstream))!=EOF)
{
putchar(ch);
}
putchar('\n');
len = 35;
putw(len,fstream);
if(ferror(fstream))
{
printf("Error writing to file.\n");
}
else
{
printf("Success writing to file.\n");
}
fclose(fstream);
fstream = fopen("test.txt","r"); /*打开文件*/
if(fstream == NULL)
{
printf("Error opening file test.txt\n");
exit(1);
}
len = 0;
len = getw(fstream);/*读取整数*/
printf("Read int is:%d\n",len);
fclose(fstream);
return 0;
}
程序先建立一个新文件test.txt,如果存在则清空其内容,具体可参考函数fopen(),然后while循环读取文件内容, 以确定内容确实为空。接着使用putw函数把一个整数(例如35)写入文中,同时检测是否发生错误,若出错则提示出错,若正确则提示成功写入文件。若成功写入文件则可以使用getw函数读取文件中的整数,并把读取的整数打印出来,关闭文件。