c语言问题,输出结果是乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言问题,输出结果是乱码相关的知识,希望对你有一定的参考价值。

麻烦问下大佬们我这段程序哪有问题,编译没有报错,但是输出的是乱码。

#include<stdio.h>
#include<string.h>
struct x

char name[10];
int age;
char address[10];
char sex[10];
student1="星哥",20,"天水","女";
int main()

struct x student1;
printf("%s\n",student1.name);

return 0;

你在定义x结构体的同时,已经定义了一个x型的全局变量student1并赋了初值,然而,你的main函数里又定义了同名的局部变量student1并没有赋初值。main函数执行时,这里的student1是未赋初值的,所以student1.name的值并不是"星哥",你以%s输出它,自然会显示为“乱码”。

改正方法是,既然你已经定义了全局变量,main函数里就不要再定义了。

#include <stdio.h>
#include <string.h>

struct x 
char name[10];
int age;
char address[10];
char sex[10];
 student1 = "星哥",20,"天水","女";

int main() 
/*struct x student1; 注释掉这一句就会是正常的*/
printf("%s\\n",student1.name);

return 0;

运行结果

参考技术A 去掉你main函数里的struct x student1;就可以了

#include<stdio.h>
#include<string.h>
struct x

char name[10];
int age;
char address[10];
char sex[10];
student1="星哥",20,"天水","女";
int main()

printf("%s\n",student1.name);

return 0;
参考技术B 回答

您好,亲~亲.您的问题已收到,整理回答ing~请稍等片刻,

您好,亲~亲.您的问题已收到,整理回答ing~请稍等片刻,

是中文乱码么

C语言运行的时候汉字全部乱码怎么回事?

做一个系统加了下面这些以后汉字就开始乱码了
//删除函数void del() system("cls"); struct iphone *p,*temp; int x; temp=head; printf("请输入想要删除的销售人员代号\n"); scanf("%d",&x); while(temp->num!=x&&temp!=NULL) p=temp; temp=temp->next; /* 跟踪链表的增长,即指针后移*/ if(x==temp->num) /*找到相同人员代号*/ if(temp==head) //要删除项在表头位置 printf("\n删除代号是%d的销售人员信息\n",temp->num); head=head->next; //将结点从链表中删除 free(temp); //释放要删除结点 else p->next=temp->next; //结点在中间位置 printf("delete %d people\n",temp->num); free(temp); else printf("no find people");

1、汉字乱码是因为缓冲区有字符,需要用fflush(stdin);来清空键盘缓冲区,
使用getch等都是治标不治本的办法,可以多学习一下fflush的使用,对于大批量的手动输入,很用。
2、例程:

#include"stdio.h"
#include"stdlib.h"
#include <conio.h>
main()
   
    
    char x;
    while(1)
    
        printf("请输入一个小写字母:");
            fflush(stdin);//清空键盘缓冲区
    x = getchar();
    printf("大写字母为:\\n");putchar(x - 32);
    

参考技术A 看你这图比较面熟,你是不是用的Code::Blocks? 如果是的话:
这是CodeBlocks编译器设置问题,在CodeBlocks菜单选择
Settings -> Compiler and debugger settings -> Global compiler settings -> Other options ,在其中输入语句
-fexec-charset=GBK -finput-charset=UTF-8追问

等会我再按你说的看一下,那为什么只有加了这个函数以后才会乱码?是不是函数有错误?谢啦,还有一个问题有一个函数老是出错,求解,我把图片发到问题补充里,靠你了大神

追答

if()条件里面的printf()函数不加取地址符&。

参考技术B else p->next=temp->next; //结点在中间位置 printf("delete %d people\n",temp->num); free(temp);

如果temp已经漂到尾结点,temp->next是位置的,就像一楼说的越界,所以最好做一个是否是末尾结点的判断,当为最后一个,直接删除free.
参考技术C (“” ; /n),可能少了一些符号?! 参考技术D 越界访问了

以上是关于c语言问题,输出结果是乱码的主要内容,如果未能解决你的问题,请参考以下文章

我写了一个C语言程序。但输出结果为一串乱码。不知道是哪里错误了

C语言文件问题:为啥下面程序会有乱码输出?

c语言 输出char类型 乱码

C语言文件输出时,输入数据后为啥会出现乱码

c语言输出字符串为啥是乱码?

c语言char输出乱码