您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言getw()函数:以二进制形式从文件流中读取整数

时间:12-29来源:作者:点击数:

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函数读取文件中的整数,并把读取的整数打印出来,关闭文件。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门