c语言运行程序结果出现类似中文的乱码

供稿:hz-xin.com     日期:2025-01-14
我编写的C语言程序怎么执行后出现中文乱码?

这是肯定的。。比如你输入a 然后回车 getchar() 接收到的不是a 是回车 出来肯定是乱码 改法
int main()
{

char x;
while(1)
{
printf("请输入一个小写字母:");
x = getchar();
getchar();
printf("大写字母为
");
putchar(x-32);
printf("
");
}
return 0;
}
getchar 很不好用 还不如printf %s 来的好用

你写代码时的编码不正确,如果有中文有有可能出现乱码

我的运行没有问题啊,

 

 由此可见不是程序问题,解决方法1: 这个问题是因为语言设置不正确。如果想在AppWizard生成的工程文件中使用中文,在在MFC
AppWizard的第1步中选择中文资源,选择Chinese(P.R.C),如果你在语言列表中没有找到有关中文的选项,说明你的VC++的中文支持模块没有安装。此时,应退出VC++,在VC++的光盘的DevStudioSharedIDEBinIDE目录下找到APPWZCHS.DLL文件,将其拷贝到硬盘的DevStudioSharedIDEBinIDE目录下即可,再启动VC++,就可以看到这一选项了。使用这一选项生成的工程文件中的所有资源都是中文的。VC++还提供了繁体中文(APPWZCHT.DLL)、日文(APPWZJPN.DLL)和韩文(APPWZKOR.DLL)的支持模块。

  方法1:
如果你的工程中的菜单、对话框、字符串等资源不是由AppWizard生成的,而是手工添加的,你必须保证该资源的Language选项为Chinese(P.R.C)。具体的做法是在资源列表中选择资源,然后在快捷菜单中选择Properties,在话框中设置Language下拉框。如果在Language中选择English,尽管在集成环境中可以正常显示中文,但编译后就变成了诸如"___.???"之类的乱码了。

  方法1: 有一个解决方案不必从头作起:找到rc文件(资源文件),把其中LANGUAGE 9,
1的地方改为4,2;codepage(1252)改为codepage(936);另外把#include "afxres.rc" 改成#include
"l.chsafxres.rc";把"afxres.rc" 改成"l.chs\afxres.rc"即可,其中的数据根据不同文字代码可能不同

希望对你有帮助



//这样解决或许可以。

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

void main()

{

char a[5];

int n,i;

printf("输入5个字符,按回车键结束:");

//fflush(stdin);

gets(a);

i=0;

while(i<5)

    {

if(('A'<=a[i])&&(a[i]<='Z'))

{

a[i]+=32;

}

else if(a[i]>='a'&&a[i]<='z'){}

else{

puts("输入异常");

break;

}

i++;

}

i=i-1;

    while(i>=0)

{

printf("%c",a[i]);

i--;

}

printf("
");

}



#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

void main()

{

 char a[5];

 int n,i;

 printf("输入5个字符,按回车键结束:");

 //fflush(stdin);

 for(i=0;i<=5;i++)

  scanf("%c",&a[i]);

 i=0;

 while(i<5)///这里有错

    {

  if('A'<=a[i]&&a[i]>='Z')//这里你应该输入大写才符合

   {

    a[i]+=32;

   }

  i++;

 }

 i=i-1;

    while(i>=0)

 {

  printf("%c",a[i]);

  i--;

 }

 printf("
");

}


while(i<5) 只要5个字符,是从0~4,没有5这个字符

if(('A'<=a[i])&&(a[i]>='Z')) //这个逻辑上有问题,你仔细想想
if(('A'<=a[i])&&(a[i]<='Z'))

你的问题就是这个if,因为小写,所以还是加了32,就到了中文区域了

if(('A'<=a[i])&&(a[i]>='Z'))
{
a[i]+=32;
}
如果是考虑将大写字母转换为小写字母
判断条件应该为大于等于A且小于等于Z这个范围才对
而不是小于等于A和大于等于Z,这样的条件,只有AZ才符合
至于所谓的中文,乱码罢了

c语言运行程序结果出现类似中文的乱码
我的运行没有问题啊,由此可见不是程序问题,解决方法1: 这个问题是因为语言设置不正确。如果想在AppWizard生成的工程文件中使用中文,在在MFC AppWizard的第1步中选择中文资源,选择Chinese(P.R.C),如果你在语言列表中没有找到有关中文的选项,说明你的VC++的中文支持模块没有安装。此时,应退出VC++...

C语言运行的时候汉字全部乱码怎么回事?
1、汉字乱码是因为缓冲区有字符,需要用fflush(stdin);来清空键盘缓冲区,使用getch等都是治标不治本的办法,可以多学习一下fflush的使用,对于大批量的手动输入,很用。2、例程:include"stdio.h"#include"stdlib.h"#include <conio.h>main(){ char x; while(1) { printf("请输入...

c语言程序执行后出现汉子是怎么回事
出现汉子………’\\1‘表示ascii为1的字符,这个没问题 问题是ascii(标准的)一共才128个,你后面用219,当然会 乱码 而汉字在计算机中是每两个字节存储一个的,你的两个连起来的219刚好被识别成了 '圹 ',所以会这样。

dev c++编写出来的程序为什么运行了出现的字会乱码? - 知乎
当使用Dev C++编写的程序在运行时出现乱码,问题可能出在字符编码的不一致上。通常,若代码以UTF-8格式保存,所有字符串字面量会被理解为UTF-8编码。然而,Windows cmd默认使用系统语言对应的编码页,对于中文环境,其默认为GBK编码。这导致了在显示UTF-8编码的文本时出现乱码现象。为解决此问题,有几种...

电脑系统语言乱码
电脑系统语言乱码(电脑系统语言乱码怎么解决) 有些软件会因为这些乱码引发程序运行错误的状况。其实我们只要将系统的语言设置成简体中文就能解决乱码的问题,现在分享修复电脑乱码问题有效技巧。1、点击电脑“windows”图标,选择“控制面板”选项,:2、将查看方式更改成“大图标”,找到“区域和语言”选项,...

我的C语言程序运行后为什么是乱码?
有几个小问题:第一:c语言一般不支持中文,如果你用vc6.0++就是无法打印中文,一定会乱码,建议用英文;第二:如果你用的c语言编译器支持中文,如devc++,则可以使用中文;第三:我们的使用的字符格式,最多的是UTF-8,把默认代码页格式改为UTF-8试试吧 希望我的分享对你有用,感谢采纳 ...

电脑打开程序或软件出现乱码的解决办法(中文变成乱码)
5. 确保系统区域设置为“中文(简体,中国)”,这有助于避免非Unicode程序显示中文乱码的情况。若上述方法无效,可尝试在“更改系统区域设置”中取消勾选“Beta版:使用Unicode UTF-8 提供全球语言支持”,然后重启系统,问题可能得以解决。对于需要更深入解决的用户,可以尝试修改注册表,但这步骤较为复杂...

Win7系统打开任何程序出现乱码的解决方法
在Win7旗舰版系统打开软件会出现乱码的情况,一大串看不懂的字符,导致程序无法正常运行,那么如何解决呢?针对win7系统打开程序出现乱码问题,下面小编研究整理出几种解决方法给大家,感兴趣的用户一起往下看。解决方法一:1、打开Win7系统的控制面板点击“区域和语言”选项;2、在“区域和语言”属性对话...

请教各位:程序运行时繁体中文显示为乱码怎么回事
可以尝试首先打开控制面板,打开区域语言设置,区域选项第一个选择选中文(中国)第二个选中国,语言选项卡第一个勾去掉,第二个勾打上,详细信息里选择高级里面,2个勾全去掉保存一下,在区域语言选项的高级选项里选择中文,代码页转换表里面把繁体勾上。应该就没问题了 ...

乱码形成原因及去除方法大全
常见的乱码,一般可以分成五种类型:第一类是文本\/文档文件乱码,这一般是由于源文件编码,与Windows使用的编码不通用造成的;第二类是网页乱码,形成原因与第一类乱码类似;第三类是Windows系统界面乱码,即中文Windows的菜单、桌面、提示框等显示乱码,主要是Windows注册表中有关字体的部分设置不当引起的;第四类是应用程序的...