关于C语言从文件中一个一个字符读取,然后一个一个字符打印出来,但是中文打不出来?
本帖最后由 易晓外 于 2018-12-29 15:02 编辑有没有大佬帮我解惑的啊?
就是我之前编写了一个很小的c程序,从文件中一个一个字符读取,然后打印到屏幕,原先我的电脑还可以读取中文的,重装系统后就变成“?”了,然后在别人电脑上还是可以读中文的,问题出在哪里了?我电脑是不是少什么东西了?
下面是源代码和运行图
#include <stdio.h>
#include <stdlib.h>
int main()
{
void put();
void get();
int a;
printf("########################################\n");
printf("## 功能菜单 ##\n");
printf("## ##\n");
printf("## 1.输入加密前密码。 ##\n");
printf("## 2.输出解密后密码。 ##\n");
printf("## ##\n");
printf("########################################\n");
printf("请输入数字1或2:\n");
scanf("%d", &a);
switch (a)
{
case 1: {
system("cls");
put();
system("pause");
break;
}
case 2: {
system("cls");
get();
system("pause");
break;
}
default: {
printf("输入错误\n");
printf("请重新输入");
system("pause");
break;
}
}
return 0;
}
void put()
{
FILE *fp;
char ch;
fp = fopen("key.txt", "a");
printf("请输入密码(以#结尾):\n");
ch = getchar();
while (ch != '#')
{
fputc(ch, fp);
ch = getchar();
}
fclose(fp);
}
void get()
{
FILE *fp;
char ch;
getchar();
fp = fopen("key.txt", "r");
ch = fgetc(fp);
while (!feof(fp))
{
putchar(ch);
ch = fgetc(fp);
}
fclose(fp);
}
应该是需要修改你的ide配置,看看字符集是不是gb2312 先在程序最前面加一个
system("chcp 936");
看看效果
人造人 发表于 2018-12-29 16:51
先在程序最前面加一个
除了多出来“活动代码页:936”,其他没有变{:5_96:} 易晓外 发表于 2018-12-29 18:58
除了多出来“活动代码页:936”,其他没有变
试一下
puts("你好\n"); 你的源文件是什么编码格式?
BngThea 发表于 2018-12-29 16:02
应该是需要修改你的ide配置,看看字符集是不是gb2312
我的是gbk; 人造人 发表于 2018-12-29 19:04
试一下
有“你好”; 本帖最后由 易晓外 于 2018-12-29 19:40 编辑
人造人 发表于 2018-12-29 19:07
我原先电脑是可以的,只是重装系统后出现的问题,而且在其他电脑上没有出现此问题 人造人 发表于 2018-12-29 19:05
你的源文件是什么编码格式?
ANSI #include <stdio.h>
int main(void)
{
int buf;
size_t index = 0;
FILE *file = fopen("Test.txt", "r");
int ch;
while((ch = fgetc(file)) != EOF)
{
buf = ch;
}
fclose(file);
for(size_t i = 0; i < index; ++i)
{
printf("%X ", buf);
}
printf("\n");
for(size_t i = 0; i < index; ++i)
{
putchar(buf);
}
printf("\n");
return 0;
}
人造人 发表于 2018-12-29 19:40
这。。。。。 可能是你的dev配置问题,试试我的
链接:https://pan.baidu.com/s/1jwjQg530QmH3MEfXs7T2oQ
提取码:8nz1
#include <stdio.h>
int main(void)
{
char str[] = {0xC4, 0xE3, 0xBA, 0xC3, 0xA3, 0xAC, 0xCA, 0xC0, 0xBD, 0xE7};
puts(str);
return 0;
}
页:
[1]