我的C语言程序运行后为什么是乱码?

作者&投稿:雷儿 (若有异议请与网页底部的电邮联系)
C语言运行程序显示为什么有乱码?~

你写代码时的编码不正确,如果有中文有有可能出现乱码

这是肯定的。。比如你输入a 然后回车 getchar() 接收到的不是a 是回车 出来肯定是乱码 改法
int main()
{

char x;
while(1)
{
printf("请输入一个小写字母:");
x = getchar();
getchar();
printf("大写字母为
");
putchar(x-32);
printf("
");
}
return 0;
}
getchar 很不好用 还不如printf %s 来的好用

有几个小问题:

  • 第一:c语言一般不支持中文,如果你用vc6.0++就是无法打印中文,一定会乱码,建议用英文;

  • 第二:如果你用的c语言编译器支持中文,如devc++,则可以使用中文;

  • 第三:我们的使用的字符格式,最多的是UTF-8,把默认代码页格式改为UTF-8试试吧

希望我的分享对你有用,感谢采纳



把代码这样修改后试试?主要是在你的编译器环境下运行的程序中能不能输入汉字?如果能够输入汉字的话,下面的程序应该能够起到效果的(程序在DEV-C++环境下编译运行通过):
#include <stdio.h>
#include <stdlib.h>
int main()
{ char chi[30];
int i;
system("chcp 936>nul");
printf("请输入:");
scanf("%s",chi);
for(i=0;chi[i];i++)
chi[i]+=4;
printf("%s",chi);
return 0;
}

有几个小问题:

  • 第一:c语言一般不支持中文,如果你用vc6.0++就是无法打印中文,一定会乱码,建议用英文;

  • 第二:如果你用的c语言编译器支持中文,如devc++,则可以使用中文;

  • 第三:我们的使用的字符格式,最多的是UTF-8,把默认代码页格式改为UTF-8试试吧



c程序源码文件字符集和cmd字符集保持一致即可
cmd是gbk,c文件也存为gbk字符集,再出入汉子

  1. 什么编译器

  2. 输出乱码是哪句printf的结果?

  3. scanf那里没必要加&了吧




c语言,以下程序运行后的输出结果是
c=(a+=a-=5)是一个表达式,(a=b,b+3)是另一个表达式。a=0,a=a-5=-5,a=a+a=(-5)+(-5)=-10,将值赋给c,c=-10,此时,a=-5 a=b,将b的值赋给a,a=0,执行b+3=0+3=3,这个3不对任何变量赋值。因此最终结果a=0,b=0,c=-10 输出a、b、c的值,输出0,0,-10...

c语言程序运行结果
这里需要知道的只有一个,传值调用时对形参的修改不影响实参值 所以main里面一直是a=5,b=8 第一次调用p(5,8),输出 5 13 第二次调用p(13,5)输出 13 18

C语言:写出程序运行结果并解释为什么
\/\/后置++做完之后 c是 1 ,b是2 e=15\/10; \/\/虽然e是浮点数,但是赋值在后,所以e是1.0,不是1.5 f=d\/10; \/\/因为d是浮点数,所以做了实数除法,所以f是 1.5 printf("%d,%d,%d,%f,%f,%f",a,b,c,d,e,f);return 0;} 因此结果是:0,2,1,15.0, 1.0,1.5 ...

C语言,以下程序运行后的输出结果为__
递归函数。开始时,len为0,offset=3,offset不为0,先输出p+offset-1上的元素,即*(p+2),为g,并len++,再调用print(str)。之后,每次递归,len静态变量保存了上一次的值。实际上,len每加一,offset就随之向左偏移一位,指向前面的一个字符,也就是倒过来输出字符串中的每个字符。直到len=...

C语言中一个程序写完后怎么运行啊?
当编写完一个程序后,需要首先进行编译,然后再运行。如下图所示,程序编写完毕后,点击工具栏中的Execute,选择compile(编译)。如果没有错误,再选择Execute,选择run(运行)。

一道C语言题:下面的程序段运行后,输出结果是
答案是0;int i,j,x=0;static int a[8][8]; \/\/定义的时候系统自动初始化,把数组中所有的元素都赋成0;for(i=0;i<3;i++)for(j=0;j<3;j++)a[i][j]=2*i+j; \/\/将数组右上角的3X3的子矩阵赋值;(注意,此时结束时j的值是3)for(i=0;i<8;i++)x+=a[i][j];\/\/这里...

在C语言中编写了一个程序运行之后以后运行其他程序都显示在运行这个程序...
可能是你运行的程序没有退出,你退出之后在运行别的程序。你是不是在cmd状态下运行的?

在c语言中以下程序段运行后的输出结果是
输出结果是3.int n[3], t, j, k;for (t=0; t<3; t++){ n[t] = 0; \/\/这个相当于数组的初始化,全部初始化为0 } k = 2;for (t=0; t<k; t++) \/\/执行for循环,当t=0时,j=0时,n[0] = n[0] + 1;得到n[j]=1,这里的n[t]的 { 值也将从0变为...

C语言 以下程序运行后的正确结果是___.
第二行输出不是5,也不是7,应该是4 x+=z>y?z--:y++ \/\/这个表达式里面"+="的优先级是最低的,所以等价于 x+=(z>y?z--:y++)验证下:

C语言 以下程序运行后的结果是( )
k=0时,s[0]=1 因为你的case 没有break做中断,所以 s[0]=1时,执行到case 4 ,也就是i=3,v[3]++取v[3]的值,然后v[3]值增加1,变为1 k=1时,s[1]=2,也执行到i=3,v[3]++ v[3]变为2 k=2时,s[2]=3,也执行到i=3,v[3]++,v[3]变为3 k=3,v[3]变为4 k=4...

濮阳县17858962244: c语言编好程后运行,运行程序出现乱码.是什么问题? -
智邹柘木: 你没有设置结束标记'\0',就把a的所有内存内容 都输出了 主要就是你使用输出的那一段内存没有初始化 发下你的代码?比如#include<stdio.h> void main() { char a[20]; a[1]='1'; a[18]='2'; a[19]=0; printf("%s",a); } 解决方式:#include<stdio.h>#...

濮阳县17858962244: C语言程序不知道为什么变成乱码了 -
智邹柘木:你用U盘复制时出问题了,可能是U盘逻辑格式损坏,也可能是复制过程中出错,你可以打开第二个文件试一试,第二个也是乱码那就十有八九是U盘的问题,重新格式化U盘,第二个文件不是乱码那就是复制第一个文件时出错了,重新去复制一次把. 乱码到老师那里也是乱码~~~

濮阳县17858962244: C语言中写文件,为什么写出的是乱码呢,求大 -
智邹柘木: fp=fopen("stud.dat","wb"); //你建立的是二进制文件,这种文件用记事本打开就是乱码,这是正常的.

濮阳县17858962244: c语言,为什么会乱码 -
智邹柘木: 循环里面应该这样写 for(int i =0;str[i]!='\0';i++) {if(str[i] == c)continue;str1[j++] = str[i];}

濮阳县17858962244: 为什么我用C语言读入的文件是乱码流? -
智邹柘木: 是文本读取的?还是二进制读取的?读取的文件是什么编码的?ANSI?Unicdoe?这些如果没高清,就是在猜谜语

濮阳县17858962244: C语言问题!!我输出的内容是正确的但是后面会有一堆乱码是怎么回事?? -
智邹柘木: 如果输出的是字符串,则是没有正确设置串尾符'\0'(或是正确的串尾符被破坏掉了)的缘故.

濮阳县17858962244: C语言,字符串输出是乱码是怎么回事? -
智邹柘木: 字符串使用前请使用清空语句把垃圾内存清理成'\0',也就是0x00(0): memset(str2, 0x00, sizeof(str2)); 当然,也可以在声明的时候进行初始化: char str2[20] = {0}; 这句也能实现同样的效果.这是C语言习惯,务必养成! '\0'是字符串结束符,每当解释器看到这'\0'才会认为字符串终止,而你的程序明显没有字符串结束符,所以连同垃圾内存一起读出来了.“烫烫..”等就是垃圾内存. 不明白欢迎追问

濮阳县17858962244: 刚写的c语言程序为什么会有乱码? -
智邹柘木:与Z和z的判断 写的不对 改成 #include #include int main() { char a[85]; int i,j; gets(a); j=strlen(a); for(i=0;i{ if('a'<=a[i]&&a[i]<='z')//<= printf("%c",a[i]-32); else if('A'<=a[i]&&a[i]<='Z')//<= printf("%c",a[i]+32); else printf("%c",a[i]); } return 0; }

濮阳县17858962244: 为什么我在一台电脑上编的C语言程序在另一台电脑上却显示乱码? -
智邹柘木: 不是以上的原因 c语言编程不是跨平台的 它是针对特定的cpu进行编程 cpu不同时你链接编译时生成的可执行文件不同,你把代码移植到另一台电脑上 ,cpu不同(时钟频率不同)就会产生错误,就是你所说的乱码.唯一的解决办法就是重新编写,而用 java就不同了,java是跨平台的 可移植的 代码不管移植到那个电脑 结果都是一样的!希望能理解这个问题的内涵!谢谢!满意请采纳

濮阳县17858962244: c语言:这个程序为什么输出来是一堆乱码?
智邹柘木: 这个错误的原因是对union的定义不清楚,联合的意思是几个成员共用一个内存空间,但是每个时刻只能有一个成员占用.所以在程序中只有data.a有值,所以可以如下测试下: #include &lt;iostream&gt; #include &lt;string&gt; using namespace ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网