C语言求助:如何从文件中读取汉字
本帖最后由 额外减小 于 2022-8-31 16:17 编辑我想要从一个.txt文件中读取一些汉字,但是好像库里面定义的所有函数都是用来读取char类型的数据。
所以,我想问一下如何从文件读取汉字而且正确的输出(思路即可)(或者有哪些我不知道的库函数可以实现这一功能吗)
(大佬勿喷{:10_277:} {:10_254:} )
#include <stdio.h>
int main()
{
FILE *fp = fopen("file.txt","r");
char str;
fgets(str,4,fp);
printf("%s",str);
return 0;
}
这么做是失败的,有乱码。 根据文件的编码方式计算一个汉字的长度 比如UTF8一个汉字的长度是3
GBK一个汉字的长度是2
char str;这个东西要初始化 wp231957 发表于 2022-8-31 16:54
根据文件的编码方式计算一个汉字的长度 比如UTF8一个汉字的长度是3
GBK一个汉字的长度是2
感谢大佬,谢谢谢谢,但我还是不明白您说的意思是什么。
我有一些无知的问题请您指导谢谢
1.如何知道文件的编码方式
2.具体如何完成程序的要求
上述问题还请大佬不吝赐教{:10_254:} 额外减小 发表于 2022-8-31 17:08
感谢大佬,谢谢谢谢,但我还是不明白您说的意思是什么。
我有一些无知的问题请您指导谢谢
1.如何知道文 ...
哦,文件有写是UTF-8
但具体应该要怎么写代码完成将文件中的汉字打印出来呢{:10_254:} 额外减小 发表于 2022-8-31 17:10
哦,文件有写是UTF-8
但具体应该要怎么写代码完成将文件中的汉字打印出来呢
你那两个4都表明只能取一个汉字
要想多获取汉字,要提高这两个数字
前面已经说过,要对数组进行初始化,以防止乱码 本帖最后由 额外减小 于 2022-8-31 17:17 编辑
wp231957 发表于 2022-8-31 17:13
你那两个4都表明只能取一个汉字
要想多获取汉字,要提高这两个数字
前面已经说过,要对数组进行初始化 ...
#include <stdio.h>
int main()
{
FILE *fp = fopen("file.txt","r");
char str={'\0'};
fgets(str,54,fp);
printf("%s",str);
return 0;
}
我的新代码,但还是乱码。
浣犲ソ浣犲ソ鎴戞槸閲戦獜瀹炬兂娴嬭瘯涓 本帖最后由 额外减小 于 2022-8-31 17:23 编辑
额外减小 发表于 2022-8-31 17:16
我的新代码,但还是乱码。
浣犲ソ浣犲ソ鎴戞槸閲戦獜瀹炬兂娴嬭瘯涓
欸,为什么我的乱码没法发出来
只有一部分
wp231957 发表于 2022-8-31 17:13
你那两个4都表明只能取一个汉字
要想多获取汉字,要提高这两个数字
前面已经说过,要对数组进行初始化 ...
所以说,我思路没有问题是吗 额外减小 发表于 2022-8-31 17:18
欸,为什么我的乱码没法发出来
只有一部分
你是在什么环境下执行的exe
我怀疑是你的cmd是gbk wp231957 发表于 2022-8-31 17:22
你是在什么环境下执行的exe
我怀疑是你的cmd是gbk
可以把你的问题描述的具体一些吗?我好像未听懂(我很逊) 额外减小 发表于 2022-8-31 17:24
可以把你的问题描述的具体一些吗?我好像未听懂(我很逊)
printf("中国")
你试一试,这句代码看看能输出啥 wp231957 发表于 2022-8-31 17:28
printf("中国")
你试一试,这句代码看看能输出啥
是输出“中国”
wp231957 发表于 2022-8-31 16:54
根据文件的编码方式计算一个汉字的长度 比如UTF8一个汉字的长度是3
GBK一个汉字的长度是2
1 额外减小 发表于 2022-8-31 17:30
是输出“中国”
https://blog.csdn.net/jackailson/article/details/115417081 https://blog.csdn.net/weixin_29798625/article/details/117015353
wp231957 发表于 2022-8-31 17:34
https://blog.csdn.net/jackailson/article/details/115417081
我试试看
谢谢大佬{:10_254:} 额外减小 发表于 2022-8-31 17:36
我试试看
谢谢大佬
但是那样即使解决,也是有bug
最好的解决办法还是换一个编辑器
比如vscode默认就不存在gbk这个东西
编码高度一致,所以不存在乱码这个东西 wp231957 发表于 2022-8-31 17:40
但是那样即使解决,也是有bug
最好的解决办法还是换一个编辑器
比如vscode默认就不存在gbk这个东西
谢谢大佬
但是如果我这样,中国就变成乱码了。这里面是什么原因?
谢谢大佬 本帖最后由 jackz007 于 2022-8-31 17:53 编辑
先用命令:
type file.txt
看看输出的东西,如果不能看到汉字,说明文件内容是 UTF-8 编码的,需要按照下面的方法转换文件编码为 GBK。
用 Windows 记事本打开 "file.txt" 选择 "另存为" 在对话框的 "文件名"、"保存类型" 栏的下方,还有一个"编码" 栏,点开下拉菜单,选择 "ANSI" 然后保存文件,这样,"file.txt" 的内容应该就可以用你编写的程序正常看到了。 本帖最后由 额外减小 于 2022-8-31 17:54 编辑
jackz007 发表于 2022-8-31 17:48
用 Windows 记事本打开 "file.txt" 选择 "另存为" 在对话框的 "文件名"、"保存类型" 栏的下方,还 ...
哇哦
不愧是大佬
这么多大佬一起回答我这个萌新
我都不知道该给谁最佳答案{:10_243:}
页:
[1]
2