C语言getw()函数:以二进制形式从文件流中读取整数
getw()函数用于从流中取得整数,其原型如下:
int getw(FILE *stream);
【参数】参数stream为要取整数的流。
【返回值】该函数返回从流中读取的整数。如果文件结束或出错,则返回EOF。
【实例】下面的实例演示了getw()函数的使用,采用该函数从流中获取整数,代码如下:
注意:putw()和getw()都是按二进制输入输出的。所以如果你用putw()输入数据到文件后以文本的方式打开看到的将都是乱码。
同样如果你在文本文件中输入了数字并保存,用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函数读取文件中的整数,并把读取的整数打印出来,关闭文件。