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

#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("\n");
}

我的运行没有问题啊,

 

 由此可见不是程序问题,解决方法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"即可,其中的数据根据不同文字代码可能不同

希望对你有帮助

追问

appwizard是什么,mfc又是什么,可以详细点,具体在哪里可以找到你说的这些命令

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-16
//这样解决或许可以。

#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("\n");

}

追问

谢谢,你的程序可以实现我的要求,但是我之前的代码为什么会出现我说的那种情况呢?是输入函数的问题,还是循环体的问题,还是两个都有问题?

追答

是把字符串输到了一个字符里;
就是把五个字母输到了一个c里面。

追问

我不是用了一个for循环把整个数组的元素都赋值了吗,怎么会把字符串都存到一个里面呢

追答

scanf("%c",&a[i]);
应该是等回车才结束吧

本回答被提问者采纳
第2个回答  2013-08-30
#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("\n");

}

第3个回答  2013-08-30
while(i<5) 只要5个字符,是从0~4,没有5这个字符

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

你的问题就是这个if,因为小写,所以还是加了32,就到了中文区域了
第4个回答  2013-08-30
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++...

VSCODE C语言终端输出中文出现乱码解决
在使用VSCode编写C语言时,有时会遇到输出到终端显示乱码的问题。这是由于VSCode默认使用UTF-8编码,而CMD默认编码为GBK,两者编码不同导致乱码现象。经过查询,解决办法主要有修改编码格式、环境变量、注册表等,但修改系统默认编码可能引发蓝屏风险,因此我并未采用。在VSCode设置中,可以通过配置单独语言的...

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

我编写的C语言程序怎么执行后出现中文乱码?
这是肯定的。。比如你输入a 然后回车 getchar() 接收到的不是a 是回车 出来肯定是乱码 改法 int main(){ char x;while(1){ printf("请输入一个小写字母:");x = getchar();getchar();printf("大写字母为\\n");putchar(x-32);printf("\\n");} return 0;} getchar 很不好用 还不...

C语言问题,怎么执行出来的是乱码
你做什么操作的时候出现乱码了?我找到你的程序的一个错误:void fun4(){ int k;char newname[20],t[1];printf("请输入该学生的名字!\\n");这个地方需要加上一个gets(),为了接收你的回车赋,否则这个功能是实现不了的。再有即使加上这句话,你的程序还是有问题的,并不能删除!gets(t)...

C语言编程出现汉字输出乱码现象
C语言中一个汉字是由两个字节来表示的 而C语言编程主要是以字节为单位来显示 所以你的C语言输出中,如果汉字显示只显示了一个字节,就会有乱码出现了 正常的做法是,你的printf输出时,符号的长度要为偶数字节。

dev- c语言中文乱码怎么解决?
在Dev-C++中,如果出现了中文乱码的问题解决方法是修改编码设置、修改源代码文件的编码、使用其他编辑器或IDE。1、修改编码设置:在Dev-C++中,选择工具、环境选项、字符编码,然后选择UTF-8或GB2312等适合的编码方式。2、修改源代码文件的编码:在Dev-C++中,选择文件、另存为,在编码选项中选择适合的...

c语言输出乱码,求解决方法
输出乱码的原因见下图标红的地方:第一个标红处的for循环语句后面多了分号; 导致下面{}中的语句与for无关 而printf()语句中的i此时等于N,又stu[N]上没有数据,所以会输出乱码;同理后面输出最高成绩学生时,i的值也为N,因此最后打印stu[i]时也会输出乱码;我觉得你的本意应该是输出stu[no],...

C语言输出最后 会多一个乱码
因为你没有初始化,char a[100]= {0};char b[100] = {0};这样子初始化以后就可以了,使用定义了字符数组后都必须要初始化,因为字符数组的长度是根据最后一位是不是''\\0''决定的,如果没有初始化就会出现你这种乱码的问题了

c语言程序执行后出现汉子是怎么回事
你输出的时候用的是%c,输出的是字符 我这个代码中第三个printf后面的97是字母a的ascii码,ascii表格中是从1到127,相当于你的219被当做ascii码读入电脑了,然后以字符格式输出

相似回答