你在定义x结构体的同时,已经定义了一个x型的全局变量student1并赋了初值,然而,你的main函数里又定义了同名的局部变量student1并没有赋初值。main函数执行时,这里的student1是未赋初值的,所以student1name的值并不是"星哥",你以%s输出它,自然会显示为“乱码”。
改正方法是,既然你已经定义了全局变量,main函数里就不要再定义了。
#include <stdioh>#include <stringh>
struct x {
char name[10];
int age;
char address[10];
char sex[10];
} student1 = {"星哥",20,"天水","女"};
int main() {
/struct x student1; 注释掉这一句就会是正常的/
printf("%s\n",student1name);
return 0;
}
运行结果
do {
fputc(ch,fp); //第一次,ch还没有值,所以会有乱码出现
ch=getchar();
} while(ch!='@' );
修改如下:
ch=getchar(); //先读一个
while(ch!='@' ) //当不是@时循环
{
fputc(ch,fp);
ch=getchar();
}
我的运行没有问题啊,
由此可见不是程序问题,解决方法1: 这个问题是因为语言设置不正确。如果想在AppWizard生成的工程文件中使用中文,在在MFC
AppWizard的第1步中选择中文资源,选择Chinese(PRC),如果你在语言列表中没有找到有关中文的选项,说明你的VC++的中文支持模块没有安装。此时,应退出VC++,在VC++的光盘的DevStudioSharedIDEBinIDE目录下找到APPWZCHSDLL文件,将其拷贝到硬盘的DevStudioSharedIDEBinIDE目录下即可,再启动VC++,就可以看到这一选项了。使用这一选项生成的工程文件中的所有资源都是中文的。VC++还提供了繁体中文(APPWZCHTDLL)、日文(APPWZJPNDLL)和韩文(APPWZKORDLL)的支持模块。
方法1:
如果你的工程中的菜单、对话框、字符串等资源不是由AppWizard生成的,而是手工添加的,你必须保证该资源的Language选项为Chinese(PRC)。具体的做法是在资源列表中选择资源,然后在快捷菜单中选择Properties,在话框中设置Language下拉框。如果在Language中选择English,尽管在集成环境中可以正常显示中文,但编译后就变成了诸如"___"之类的乱码了。
方法1: 有一个解决方案不必从头作起:找到rc文件(资源文件),把其中LANGUAGE 9,
1的地方改为4,2;codepage(1252)改为codepage(936);另外把#include "afxresrc" 改成#include
"lchsafxresrc";把"afxresrc" 改成"lchs\afxresrc"即可,其中的数据根据不同文字代码可能不同
希望对你有帮助
以上就是关于c语言问题,输出结果是乱码全部的内容,包括:c语言问题,输出结果是乱码、C语言文件开头出现乱码、c语言运行程序结果出现类似中文的乱码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)