⑴ c语言问题,输出结果是乱码
你在定义x结构体的同时,已经定义了一个x型的全局变量student1并赋了初值,然而,你的main函数里又定义了同名的局部变量student1并没有赋初值。main函数执行时,这里的student1是未赋初值的,所以student1.name的值并不是"星哥",你以%s输出它,自然会显示为“乱码”。
改正方法是,既然你已经定义了全局变量,main函数里就不要再定义了。
#include<stdio.h>
#include<string.h>
structx{
charname[10];
intage;
charaddress[10];
charsex[10];
}student1={"星哥",20,"天水","女"};
intmain(){
/*structxstudent1;注释掉这一句就会是正常的*/
printf("%s ",student1.name);
return0;
}
运行结果
⑵ C语言问题,为什么输出总是乱码
看一眼就知道。。乱码是因为你的指针没有赋NULL,是野指针,指向了不明区域,所以会出现乱码,以后定义指针最好int
*a
=
NULL;这样子
⑶ 我的C语言程序运行后为什么是乱码
有几个小问题:
第一:c语言一般不支持中文,如果你用vc6.0++就是无法打印中文,一定会乱码,建议用英文;
第二:如果你用的c语言编译器支持中文,如devc++,则可以使用中文;
第三:我们的使用的字符格式,最多的是UTF-8,把默认代码页格式改为UTF-8试试吧
希望我的分享对你有用,感谢采纳
⑷ C语言为什么会出现乱码
完全没看懂你的程序。
有明显的几个奇怪的地方。
int time = { 1 };
unsigned int k = { 0 };
这两句不符合C语言语法吧,大括号一般很少用的,一般用在数组上,但是你的变量明显不是数组啊。
k = (unsigned int)malloc(sizeof(unsigned int) * time);
malloc函数,返回的是指针吧。你强制转换的不是指针啊,一般没人这么用,没看懂,为什么要强制转换成unsigned int ?应该写错了吧,是 unsinged int *吧。
p = getchar();//
没看懂,这里为什么要getchar,是因为怕有脏东西吗?这里会出问题的,但是代码看不出会发生什么问题。
scanf_s("%d", k, 8);
这里最好改成这样吧,scanf_s("%d", k, sizeof(unsigned int));这样比较安全,反正你要的是int,直接用sizeof,算出int的字节数就可以了,不用自己知道int是多少个字节,这样可以避免出错。
key[i] = { 0 };
这里则是,完全看不懂,因为不知道key是什么,只知道是个key的数组,是什么类型的,完全没懂,只知道初始化为0。
key[i] = k; 这里完全没看懂,只能猜了,循环32次,k是一个int的数,一般是4个字节的数,每个字节是8位,所以一个int是32位,你循环32遍,看起来是想把这个int数,一位一位的输出的样子。但是前面k是用mallco申请,k应该是个指针,不是int变量。直接把指针给一个数组,有点奇怪,所以应该是key[i]=*key;但是看起来,你是要一位一位的数据,而不是一整个int数,但是这里有个问题,我不知道,你是要低位先出,还是高位先出,而且C语言,想要一位一位的数据,要使用<<,>>左移和右移指令(这里不是C++,所以没有被C++的std::cout复用于输出,这是个标准C语言的底层操作符,一般嵌入式的用的多,IT用的少,所以一般不常用),所以一位一位的输出应该写成key[i]=(*k)>>1;或者key[i]=(*k)<<1,这样是分别是左移一位,右移一位后,把数据给key的数组,这里,要根据你自己的代码要实现的功能,去调整。
printf("%d", key); 我不知道,你是想输出位数据,还是什么。如果想看位数据,应该输出二进制的数不就好了。而不用输出int型数据。
⑸ C语言编程出现汉字输出乱码现象
C语言中一个汉字是由两个字节来表示的
而C语言编程主要是以字节为单位来显示
所以你的C语言输出中,如果汉字显示只显示了一个字节,就会有乱码出现了
正常的做法是,你的printf输出时,符号的长度要为偶数字节。
⑹ C语言出现乱码
有两个问题:
一、变量a是float型,用%d输入输出会出错,可以考虑把变量d定义成int型;
二、姓名是字符串,不是字符,可以考虑用字符数组来存储。
修改如下:
#include<stdio.h>
#include<stdlib.h>
intmain()
{
inta;
floatb,c;
chard[10];
printf("请输入你的姓名: ");
gets(d);
printf("请输入你的年龄: ");
scanf("%d",&a);
printf("请输入你的身高m: ");
scanf("%f",&b);
printf("请输入你的体重kg: ");
scanf("%f",&c);//以下代码测试输入的正确性
printf("姓名:%s ",d);
printf("年龄:%d ",a);
printf("身高:%.2fm ",b);
printf("体重:%.2fkg ",c);
return0;
}
⑺ (c语言)为什么这段程序编译运行以后是乱码
#include<stdio.h>
intmain(){
charc;
scanf("%c",&c);
chara,b,d;
for(a='A';a<=c;a++){
for(b=a;b<c;b++){//输出前置空格
printf("");
}
for(b='A';b<=a;b++){//输出A-a当前的值
printf("%c",b);
}
for(d=a-1;d>='A';d--){//输出一行a当前之后的大写字母
printf("%c",d);
}
printf(" ");//换行,一行输出结束
}
return0;
}
⑻ c语言编译运行乱码是什么原因
这种情况多数是由于操作系统的语言选项不正确引起的。建议你查看一下控制面板中的区域和语言选项,特别是有关“非Unicode程序的语言”,一定要选择成“中文(简体,中国)”。然后重启电脑。
⑼ C语言中,这段代码运行时为啥会出现乱码
原有的程序代码没有任何的啊,实现了所有的要求,并且没有出现乱码: