+ -
当前位置:首页 → 问答吧 → 字符串问题

字符串问题

时间:2011-12-05

来源:互联网

#include<stdio.h>
#include<string.h>
int main()
{
char a[10]={"I am happy"}; 
char b[500];
void Convert (char *p);
void Cat(char *p1,char *P2);
gets(b);
Convert(a);  
if (strcmp(a,b)>0)//比较字符串大小,并将值较大的字符串连接到值较小的后面
  {  
  Cat(a,b);
  puts(a);  
 }
else
 {
  Cat(b,a);
  puts(b);
}
return 0;

}
void Convert(char *p)
{
  strupr(p); 
  puts(p); 
}
void Cat(char *s1,char *s2)
{
int i=0;
while(*(s1+i)!='\0') 
  i++;
while(*s2!='\0')
  *(s1+i++)=*s2++;
*(s1+i)='\0';

}
不知道哪里出问题了 为什么运行结果会出汉字?而且那个if的判断条件没用?为什么?求详解!

作者: baobohua   发布时间: 2011-12-05

char a[10]={"I am happy"};数组元素个数越界了~~~

作者: zhutou100hao   发布时间: 2011-12-05

C/C++ code

char a[10]={"I am happy"};  //越界
char a[11]={"I am happy"};  //修改

作者: chenph_210   发布时间: 2011-12-05

字符串数组的长度应该是字符的有效长度再加上一个'\0'字符结束符。所以,一般再给字符串申请空间的时候都会在原来的基础上多申请一个字符的空间,就是'\0'。

作者: cfjtaishan   发布时间: 2011-12-05

char a[]={"I am happy"};

作者: AnYidan   发布时间: 2011-12-05

引用 2 楼 chenph_210 的回复:
C/C++ code

char a[10]={"I am happy"}; //越界
char a[11]={"I am happy"}; //修改


字符数组b那么长,觉得a也要长点才好

作者: lanqiucoco   发布时间: 2011-12-05

char a[11]={"I am happy"};

作者: cdq_0317   发布时间: 2011-12-06

a数组越界

你应该使用memcmp

作者: IVERS0N   发布时间: 2011-12-06