该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

问个问题,写了一个小程序如下,想测试一下wchar.h包中的宽字节函数是否正常工作,用的是mingw+code::blocks编译,用记事本输入一些文字然后保存为utf-16格式(比如说输入了6个字符),然后用fgetwc读取这个文件,按理说应该一次读取两个字节,这样get_wchar_file_length这个函数读取的字符数应该是输入的字符数加上1(uft-16文件的BOM文件标识0xfffe)应该是7个字符,可是实际运行时返回的字符数正好是这个文件的字节数14,而不是7,感觉好像fgetwc读取的是字节而不是宽字节,请问为什么?有vc的请编译一下看是不是还是这个问题,谢谢!

/***************************************************************

a program for test functions that dealing with wide characters

in the library wchar.h

****************************************************************

author: weiyuan

time: 2007/01/06

***************************************************************/

#include

#include

#include

#include

#include

long get_wchar_file_length(FILE *fp);

int main(int argc, char argv[])

{

FILE *fpin,*fpout;

char source[20];

long file_length;

/*wchar buffer for holding a wide character reading from source file*/

printf("please input source file name\n");

gets(source);

/*get source file name*/

if((fpin=fopen(source,"r"))==NULL)

{

printf("cannot read file\n");

exit(1);

}

/*open source file*/

file_length=get_wchar_file_length(fpin);

printf("length of source file is %d",file_length);

getchar();

}

long get_wchar_file_length(FILE *fp)

{

long file_length=0;

while(fgetwc(fp)!=WEOF)

file_length++;

rewind(fp);

/*set file position to origin of file*/

return file_length;

}

c语言中宽字节,fgetwc读取的是宽字节么?相关推荐

  1. C语言方向键识别和字母识别,c语言中怎样输入和读取方向键

    在用C语言写出的"贪吃蛇"小游戏中,可以自编以下这个intokey( )函数,用来获取方向键值以便控制蛇的拐弯.库函数kbhit( )是检测是否有按键被按下,Dir是代表方向的变量 ...

  2. C语言中不同类型的取值范围

    C语言中的不同类型的取值范围 前言 C语言中,我们知道最基本的数据类型有int整型,float和double浮点型,char字符型,在计算机里,他们的取值并不是任意和无限的,都有相应的取值范围,那么计 ...

  3. c语言读取文件字节数,怎么在C语言中利用fstat函数获取文件的大小

    怎么在C语言中利用fstat函数获取文件的大小 发布时间:2021-01-22 17:03:17 来源:亿速云 阅读:110 作者:Leah 怎么在C语言中利用fstat函数获取文件的大小?针对这个问 ...

  4. 怎么把位域合成一个字节_C语言中字节对齐和位域

    1.1基本类型默认字节对齐和改变字节对齐方式 c语言在给不同类型变量分配地址空间时,并不是总是紧邻着上一个变量的地址空间分配的,而是它所在的地址空间,必须被它的默认对齐字节数整除.例如,int类型占4 ...

  5. c语言如何用fscanf将字符串读取,在c语言中如何将文本内容 赋给一个 字符串

    在c语言中如何将文本内容 赋给一个 字符串 来源:互联网  宽屏版  评论 2009-08-13 04:59:12 分类: 电脑/网络 >> 程序设计 >> 其他编程语言 问题 ...

  6. 函数使用了堆栈的字节超过_在C语言中如何访问堆栈?

    堆栈一般是用来保存变量之类的东西(静态变量在内存中,虽然堆栈就是内存的一部分,但为了防止歧义,还是分成两部分来说),一般情况下没必要去故意读取堆栈的值,变量用变量名就可以直接访问,但我曾经想要读取函数 ...

  7. C语言中的字节对齐以及其相关处理

    首先,我们来了解下一些基本原理: 一.什么是字节对齐 一个基本类型的变量在内存中占用n个字节,则该变量的起始地址必须能够被n整除,即: 存放起始地址 % n = 0,那么,就成该变量是字节对齐的;对于 ...

  8. c语言中 %s 占几个字节,printf(%*s%s%*s,——)是什么?

    我们可能知道scanf里用*修饰符,是起到过滤读入的作用.比如一个有三列数值的数据,我只想得到第2列数值,可以在循环里用scanf("%*d%d%*d", a[i])来读入第i行的 ...

  9. C语言学习(十二)C语言中的字符(宽字符与窄字符)、从字符谈谈C语言的编码、转义字符

    C语言学习(十二)C语言中的字符(宽字符与窄字符).从字符谈谈C语言的编码.转义字符 目录 C语言学习(十二)C语言中的字符(宽字符与窄字符).从字符谈谈C语言的编码.转义字符 英文字符 字符的表示 ...

  10. 用c语言对文件的写入和保存,C++_C语言中对文件最基本的读取和写入函数,C语言read()函数:读文件函数( - phpStudy...

    C语言中对文件最基本的读取和写入函数 C语言read()函数:读文件函数(由已打开的文件读取数据)头文件: #include 定义函数: ssize_t read(int fd, void * buf ...

最新文章

  1. LeetCode简单题之K 进制表示下的各位数字总和
  2. socket编程之addrinfo结构体与getaddrinfo函数
  3. DOS命令大全(转)
  4. POJ 1584 A Round Peg in a Ground Hole(点到直线距离,圆与多边形相交,多边形是否为凸)...
  5. 会议室分配时间最长_论文导论动态任务分配GPU上图计算的高效处理方式
  6. docker rocketmq4.7.0
  7. Qt4.8编译MYSQL驱动
  8. 关于Ajax的get与post浅分析,同步请求与异步请求,跨域请求;
  9. 请大家慎用联想笔记本的NOVO功能
  10. svn插件说明和安装
  11. Halcon软件安装教程
  12. 黑马程序员——高新技术(银行业务调度系统)
  13. matlab实现双线性插值,使用双线性插值法放大图像(matlab实现)
  14. 2021-2025年中国DNA基因芯片行业市场供需与战略研究报告
  15. 视频剪辑计算机配置要求,笔记本电脑用来视频剪辑和后期制作要求什么配置高?...
  16. 学习arduino esp32相关例程(1)深度睡眠与唤醒
  17. 阿拉伯数字转为中文汉字写法
  18. pandas含有空列表
  19. sql 表和表之间关联
  20. 深圳大学超级计算机,Intel CMP活动之“超算习堂”走进深圳大学

热门文章

  1. Shp上传至Oracle Spatial
  2. idea 根据数据库表自动创建持久化类
  3. 读Thinking in Java(1~4)
  4. android重写view和viewgroup的区别
  5. 使用WindowsHooks库制作和使用全局钩子
  6. dockerfile入门
  7. 线程间的通信之wait和notify的使用
  8. Mybatis工作中常用动态SQL总结
  9. Web表单提交之disabled问题
  10. 企业网盘居然支持高速局域网文件传输工具(速度可达20M)