当前位置:首页 » 编程软件 » c语言编译器手机版输出乱码

c语言编译器手机版输出乱码

发布时间: 2022-08-18 10:34:20

1. c语言输出中文乱码

提几个建议。1)没给出str的大小,不知道你定义的多大。至少str要保证120以上。考虑用2的倍数最优可以char
str[122]并且因为系统将自动在最后加'\0'。最好设定读取121为好。以免读取半个中文字。2)fgets的用法问题。
追加返回值的判断为好。if(fgets(str,120,fp)!=null){
printf("%s\n",str);}3)关于出现乱码的问题,估计你的文件中有中文汉字。读取到119位的时候正好是某个汉字的前一半。要解决这个if(fgets(str,121,fp)!=null)
这里120
改成读偶数个121。另外文件最好用宽字符的。就可以避免乱码了。

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

有几个小问题:

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

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

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

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

3. 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;
}

运行结果

4. c语言代码编译通过,但输出时有乱码,什么原因

修改如下:
//---------------------------------------------------------------------------
#include<stdio.h>
void main()
{
void secret(char str1[],char str2[]); /*注意这里*/
char str1[10],str2[10]={0}; /*注意这里*/
int i;
printf("please input something");
gets(str1);

secret(str1,str2); /*注意这里*/
puts(str2); /*注意这里*/

}
void secret(char str1[],char str2[]) /*注意这里*/
{ int i;
for(i=0;i<10&&(str1[i])!=0;i++)
{
if (str1[i]<='z'&&str1[i]>='a')
str2[i]='0';
else
if (str1[i]<='Z'&&str1[i]>='A')
str2[i]='1';
else
if (str1[i]<='9'&&str1[i]>='0')
str2[i]='2';
else
if (str1[i]==' ')
str2[i]='3';
else
str2[i]='4';

}
/*注意这里*/
}

//---------------------------------------------------------------------------

5. C语言 输出显示中文乱码


for (i=0;i<strlen(save);i++)
改 为
for (i=0;i<strlen(save) -1 ;i++)
试下~

6. C语言控制台程序,中文输出变成乱码,怎么解决

这里涉及到一个字符在源代码(文本)中,编译好的二进制文件中,以及最后控制台输出编码形式的区别.
首先,要明确一点:C(语言/程序)并不理解ANSI,UTF-8以及任何其他编码.它只知道处理你给它的字符的二进制表示.
在简体中文Windows下,默认的文本保存编码是ANSI(即GBK);Linux下根据系统locale设定,一般应该是(zh_CN.UTF-8).(以下基于简体中文Windows)
1)对于源文件中保存的"中文"这个字符串,VS2008看到的就是"0xd6d0"和"0xcec4"的形式(默认ANSI编码得到).但编译器才不管是不是GBK神马的,它就管那串数字.
区别,MinGW看到的是"0xe4b8ad"和"0xe69687"(gcc默认UTF-8).注意,用MinGW编译的源文件中有中文宽字符必须保存为UTF-8编码.
2)然后,在二进制文件中的存储形式,对传统的字符串(char str[] = "中文";),编译器什么都不做,直接把那串数字(如"0xd6d0","0xcec4")搬过去塞进二进制文件.
但对于宽字符串(wchar_t wstr[] = L"中文";),编译器会将其做转换,转换成Unicode编码格式(在Windows是UTF-16,而Linux下是UTF-32).如"中文"的16位Unicode是"0x4e2d"和"0x6587",然后把这串转换后的数字("0x4e2d","0x6587")塞进二进制文件中.(这里VS和MinGW做的没有区别)
这里有点需要注意,编译器必须知道你的源文件保存的编码!如VS默认是ANSI编码,如果你用UTF-8保存.c源文件去用VS打开看一定是乱码.同理如果你用mingw编译ANSI编码保存的源文件,也会出错!(但可以修改编译选项解决,见文章末尾) 在本文这里这个原因其实很好理解,因为编译器需要知道,如果它要将一个保存在文件中的字符转成宽字符时,是从什么编码转到Unicode.(可见上述VS是GBK->Unicode,而MinGW是UTF-8->Unicode)

7. c语言输出字符串数组出现乱码

C语言字符串以'\0'结尾,如果不以该符号结尾则输出%s时会出错,程序一直往存放字符串的地址访问。而你的程序中并没有赋'\0'给那两个数组,所以会出现乱码。
没有出现乱码的数组是因为你初始化了,初始化时编译器会给它加上'\0'符号。

8. 为什么C语言输出文件内容乱码

这种文本文件,不能直接使用读到结构的方法。因为结构里会有非文本的控制符,比如字符串结束符'\0'。
一般使用直接读到结构的方法,只限于二进制格式的文件,并且最好是读自己创建的文件,别人创建的,格式刚刚好合适创建结构的也很少。
你这个乱码,你的文件里,学号长度为10个字节,所以你定义学号这个变量时,必须定义11个字节的长度,因为字符串的变量,必须要有一个'\0'作为结束,不然的话,显示的时候,没有结束符就会接着往下显示,就会有乱码出现。
如果仅仅是这三行的话,倒也能使用结构来读,比如结构里定义num[11],读完后执行一下num[10] = '\0';给它补一个结束符。但如果有人叫“王老四”,名字有的是2个字,有的是3个字这样,你这个就不好判断了。
这种文本,最好是使用fscanf("%s %s %s %s %s", num, name, sex, date, major)的形式来读取。每次读取一行。(注意字符串定义变量时,长度一定要多加1位)。

9. C语言编程出现汉字输出乱码现象

C语言中一个汉字是由两个字节来表示的
而C语言编程主要是以字节为单位来显示
所以你的C语言输出中,如果汉字显示只显示了一个字节,就会有乱码出现了
正常的做法是,你的printf输出时,符号的长度要为偶数字节。

10. c语言编译运行乱码是什么原因

这种情况多数是由于操作系统的语言选项不正确引起的。建议你查看一下控制面板中的区域和语言选项,特别是有关“非Unicode程序的语言”,一定要选择成“中文(简体,中国)”。然后重启电脑。

热点内容
androidbug 发布:2025-02-06 23:31:56 浏览:49
php数字判断 发布:2025-02-06 23:17:40 浏览:40
优路教育服务器连接不上怎么回事 发布:2025-02-06 23:03:49 浏览:141
数据库加速 发布:2025-02-06 23:02:14 浏览:565
苹果ipodpro如何连接安卓手机 发布:2025-02-06 23:00:56 浏览:529
android格式化sd卡 发布:2025-02-06 23:00:50 浏览:982
郝斌数据库 发布:2025-02-06 22:44:57 浏览:182
全息存储器 发布:2025-02-06 22:43:51 浏览:117
游戏源码如何使用 发布:2025-02-06 22:43:40 浏览:716
表与数据库 发布:2025-02-06 22:42:47 浏览:440