c语言运行程序结果出现类似中文的乱码
#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又是什么,可以详细点,具体在哪里可以找到你说的这些命令
//这样解决或许可以。
#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里面。
#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");
}
if(('A'<=a[i])&&(a[i]>='Z')) //这个逻辑上有问题,你仔细想想
if(('A'<=a[i])&&(a[i]<='Z'))
你的问题就是这个if,因为小写,所以还是加了32,就到了中文区域了
{
a[i]+=32;
}
如果是考虑将大写字母转换为小写字母
判断条件应该为大于等于A且小于等于Z这个范围才对
而不是小于等于A和大于等于Z,这样的条件,只有AZ才符合
至于所谓的中文,乱码罢了