问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言读写文件的时候怎么控制字符编码方式?

发布网友 发布时间:2022-04-21 14:50

我来回答

4个回答

热心网友 时间:2022-07-13 00:17

C语言读写文件有两种方式: 一种是文本方式,另一种是2进制方式。日文,中文,unicode, 都要用2进制方式。文件内容的编码和编码的转化,同一种编码的大端或小端编码,都要自己安排处理。

C语言不管读写都要通过fopen函数来,其中mode参数可以控制以二进制打开还是以文本方式打开。
fopen的函数原型:FILE * fopen(const char * path,const char * mode);
fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
  r 以只读方式打开文件,该文件必须存在。
  r+ 以可读写方式打开文件,该文件必须存在。
  rb+ 读写打开一个二进制文件,允许读数据。
  rw+ 读写打开一个文本文件,允许读和写。
  w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
  w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
  a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
  a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
  wb 只写打开或新建一个二进制文件;只允许写数据。
  wb+ 读写打开或建立一个二进制文件,允许读和写。
  wt+ 读写打开或着建立一个文本文件;允许读写。
  at+ 读写打开一个文本文件,允许读或在文本末追加数据。
  ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
  上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。

热心网友 时间:2022-07-13 00:17

这个程序可能是最简单的mp3播放器了。当然也谈不上什么功能。但是确实能播放。
链接时要指定库文件。VC++是vfw32.lib, GCC是libvfw32.a.
我在VC6.0和GCC/MinGW 3.3.1下都通过了。
假设程序名是MyPlay, 目录下还有一个aaa.mp3, 运行MyPlay aaa.mp3即可。
注意Sleep(50000)是让他最多播放50秒。没有Sleep()的话,窗口一闪就退出了。
具体的MCI函数请查有关资料。

#include <windows.h>
#include <vfw.h>

int main(int argc, char* argv[])
{
if (argc>1) {
HWND MyPlayer = MCIWndCreate(NULL,GetMoleHandle(NULL), 0, argv[1]);
MCIWndPlay(MyPlayer);
Sleep(50000);
}
return 0;
}
这个程序还可以播放MIDI, AVI, WMV, MPG等影音文件。
如果只是后台播放MIDI或MP3,不想显示那个没有用的窗口,把MCIWndCreate()第三个参数0改成WS_POPUP即可。
如果想精确控制Sleep()至MP3播放结束,可以改成 Sleep(MCIWndGetLength(MyPlayer));

对于mp3, MCIWndGetLength()返回值的单位是毫秒,可以直接用于Sleep()延时。
对于mpg, MCIWndGetLength()返回值的单位是帧数,还要转换成毫秒才能用于Sleep().
具体MCIWndGetLength()返回值的单位是什么,可以调用MCIWndGetTimeFormat()来查询。

>是C,不是C++ 更不是Vc++
你误解了。VC6.0不只是支持C++, 也支持C. GCC更是C编译器,不是C++编译器。
这个程序是地地道道的C程序,没有一丁点儿 C++ 的成分。但是他调用了Windows API函数,所以必须用支持Windows编程的32位C编译器,不一定用VC或GCC。
很多人认为,刚学C语言最好用GCC或VC的命令行方式,但遗憾的大多教学用的C环境仍然选用20多年前的TC。如果坚持用16位的TC可以做一些事情,但在现在绝大多数事情是他做不到的。

热心网友 时间:2022-07-13 00:18

C语言读写文件 一种是文本方式,另一种是2进制方式。日文,中文,unicode, 都要用2进制方式。文件内容 的编码 和编码的转化,同一种编码的大端或小端编码,都要自己安排处理。

(1)用2进制方式打开文件
(2)读/写 UTF-8的编码文件 开头
有3 个特殊字节,数值是16进制: EF BB BF
(3)UCS 编码(16进制) 的 UTF-8 字节流(二进制) :
0000 - 007F 0xxxxxxx
0080 - 07FF 110xxxxx 10xxxxxx
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx
010000 -- 1FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
按此转换,用fwrite() 输出字节流。
或按字节 fread() 读入,判断高位,决定连读2个还是3个4个字节,译为 UCS

热心网友 时间:2022-07-13 00:18

格式化输出方式是文本格式某人的是 UTF-8
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? c语言中小端次序和大端次序的概念和作用 C语言 编写一个程序确定机器是大端法还是小端法机器 c语言和java 使用socket通信的时候 数据大小端转换... C语言读写二进制文件读取 大小端,该怎么解 大端模式和小端模式 c语言实现2个字节的高低位转化 结构体数据大小端转换 C语言 有什么在家里可以做的兼职 不限时间的那种? 在家办公的工作有哪些? 宝妈怎么找到可以在家的工作? 有没有在家上班的工作,我初中毕业? 我大专毕业,什么都不会,能干什么 有什么工作是在家办公的 为什么现在的年轻人不愿出去上班,喜欢在家呆着是为什么? 有什么好的远程工作平台吗?在家就能办公的那种? 怎样快速缓解脖子酸痛? 上班族要怎样缓解颈部疼痛?有哪些方法呢? 有哪些伸展动作适合久坐脖子疼的上班族? 长时间坐着工作,如何缓解颈椎的慢性疼痛? 本人上班族,每天做电脑前,脖子特别疼,怎么办? C语言 编写一个程序确定机器是大端法还是小端法机器 C语言判断cpu是大端还是小端 C语言判断处理器大小端对齐原理 关于C语言强制类型转换的一个疑问 请问,大端法小端法对C语言结构体有影响吗?谢谢 C语言32位数据反序的问题 用c语言写个函数测试处理器是大端还是小端程序怎么写? c语言代码问题 C语言题目 这题和大小端有关吗 C语言,两字节转换成一个是有符号短整形 芋头蒸排骨的做法大全家常窍门 正宗香芋蒸排骨的做法大全窍门 香芋蒸排骨的做法是什么? 香芋蒸排骨简单做法 香芋蒸排骨怎么做?两种方法快速掌握 香芋蒸排骨怎么做更加好吃美味呢? 香芋蒸排骨怎么做更加好吃美味呢? 芋头蒸排骨的做法,剁椒芋头蒸排骨怎么做好 排骨炖香芋的家常做法 芋头蒸排骨的做法窍门