c语言数组问题 关于 烫烫烫
发布网友
发布时间:2022-09-16 12:30
我来回答
共4个回答
热心网友
时间:2023-10-13 03:52
因为你的字符串没有终结符
#include<stdio.h>
#include<string.h>
void main()
{
//声明变量
int j,k;
char str1[45]={'\0'},str2[45]={'\0'},str3[45]={'\0'};
char temp;
//分别收集3个字符串并连接起来,最后向用户输出
gets(str1);
gets(str2);
gets(str3);
strcat(str1,str2);
strcat(str1,str2);
printf("你输入的是:");
puts(str1);
//接下来我想用冒泡法进行排序
for(j=0;j<45;j++){
for(k=0;k<j;k++)
{
if (str1[k]!='\0'&&str1[k]<=str1[k+1])
{
temp=str1[k];
str1[k]=str1[k+1];
str1[k+1]=temp;
}
}
}
//puts()输出字符串
puts(str1);
return;
}
热心网友
时间:2023-10-13 03:52
for(j=0;j<45;j++)
for(k=44;k>j;k--) 问题在这里 字符串比较结束后会比较后面的cc 这是个负数 你的冒泡是由小到大 会把cc提到前面
热心网友
时间:2023-10-13 03:52
我很久没有用c语言了。。但我大概知道问题出在哪里,,
gets(str2);
strcat(str1,str2);
strcat(str1,str2);
这几个函数 有个一个结尾时没有加‘\0’所以 puts 是没有判断结束的。。。
所以又问题,,出现 错码问题 就会空间问题了。。你百度这几个函数吧。。应该会发现问题的
热心网友
时间:2023-10-13 03:53
一年之前的问答,不知道还在不在,出现烫的原因是,因为Debug模式在加入调试信息的时候,将所有的分配出来的栈空间的每一个字节都初始化为0xCC。0xCCCC(即两个连续排列的0xCC)的汉字编码就是烫,所以0xCCCC如果被当成文本就是烫。
将未初始化数据设置为0xCC的理由是这样可以有助于判断一个变量是否没有初始化。如果一个指针变量的值是0xCCCCCCCC,那么我们就可以基本相信这个指针没有经过初始化。