为什么C语言出现“烫”?
发布网友
发布时间:2022-09-16 04:34
我来回答
共2个回答
热心网友
时间:2023-10-12 03:18
b没有添加结束符
加上就好了
#include<stdio.h>
#include<string.h>
int main()
{
char a[100],b[100],t;
int i,j=0,c,g;
gets(a);
c=strlen(a);
for(i=1;i<c;i++)
if(a[i]>a[0])
printf("%c",a[i]);
printf("%c",a[0]);
for(i=1;i<c;i++)
if(a[i]<=a[0])
{
b[j]=a[i];
j++;
}
b[j] = 0;//添加字符串结束符
g=strlen(b);
for(i=0;i<g-1;i++)
for(j=i+1;j<g;j++)
if(b[j]<b[i])
{
t=b[j];
b[j]=b[i];
b[i]=t;
}
for(i=0;i<g;i++)
printf("%c",b[i]);
printf("\n");
return 0;
}
热心网友
时间:2023-10-12 03:18
结束符应该是'\0'吧,不是0.
C语言 字符串的输出,为什么输出那么多‘烫’呢?
输出"烫烫烫烫"是因为vc会自动把未用函数的局部变量空间按字节全部初始化为CC。而定义的字符数组空间不够,所以就占用了那部分不属于自己的空间,因为cout输出char*是要遇到空字符才停止的,所以便把那些垃圾都打出来了。即是说在最后没有字符串结束标志'\0'。
c语言中为什么出现“烫”字?
出现“烫”的原因是由于字符数组中的某些数组元素没赋值。\x0d\x0a\x0d\x0a具体原因可以通过如下实例来进行说明:\x0d\x0achar a[10];\x0d\x0aa[0] = 'a';\x0d\x0aa[1] = 'b';\x0d\x0aa[2] = 'c';\x0d\x0aa[3] = 'd';\x0d\x0aprintf("%s", a); /...
c语言老是出现烫!
出现烫,表示的是数组没有进行初始化或赋值,那个……取值运算符和++是同一优先级的……会从左往右走……比如:*p++等于(*p)++ 于是乎,你的赋值语句全部没用,相当于整个数组几乎只是最后一个*p = '\0'有用,*p等于str3,不影响参数,于是,没有经过初始化和赋值的字符串,显示为全是烫 ...
c语言中输出有个烫字,求高人指点
vc的编译器决定的,在未初始化的局部变量中,都默认值为 ”烫“(别的编译器不是这样)在你输入的字符不为20个时,剩下的就都为烫,所以输出者20个变量就有乱码 第二次数出先输出后面的乱码,在输出前面的字符
关于C语言中的烫?
因为输出"烫烫烫烫"是因为vc会自动把未用函数的局部变量空间按字节全部初始化为CC(打个比方,你定义一个10个元素的char数组,结果你初始化了2个元素,后面没初始化,没赋值,没有使用,就变CC了)。CC CCH在Unicode的编码中就是表示中文的“烫”,所以就是很多“烫”字。
c语言运行后为什么出现n多的烫烫烫烫烫!!!
出现多个烫的原因可能是未对字符数组或字符指针进行初始化或赋值。举例说明如下:char a[5];printf("%s", a); // 出现多个烫,原因是未对字符数组a进行初始化或赋值
c语言,字符串,最后面为什么会有一个"烫"字。
因为你没有给字符串置结束符,所以,把内存中的随机值按字符输出来了 puts(a)表示输出字符串a。a是字符串首地址,puts从首地址开始输出,直到遇到\0结束输出 你在for(){ }循环之后,加一句:a[i]='\0';这样就好了。当然,你要存储26个字符,所以,字符串定义数组时,要比实际的存储字符多一个...
为什么c语言内存溢出就输出烫烫烫
这有啥根本原因,就是因为字符串里面是乱码呗。未初始化内存,在C程序运行期间,全部二进制位的值都是110011001100这个样子,十六进制表示为0xcc,作为英文,是不可打印字符,而作为中文(两个字节是一个),0xcccc就是这个“烫”字。
C语言写文件的时候出现乱码“烫烫烫烫烫烫烫烫”是怎么回事
这是你定义的字符串没有初始化为0,当输出的时候编译器找到不到字符串结束符。就会出现这样的乱码。你可以将你的结构体中定义的字符数组都初始化为0.或者直接用memset()把结构体定义的变量初始化为0试一下。你的程序没有具体看,不过应该就是这个问题吧~...
c语言执行为什么出现“烫”?(急)
烫是未赋值的意思 比如你定义了一个字符串,但是没有赋初值 那么print这个字符串时,就会出现一串烫 至于错误,那么长,你自己找吧。