首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

,C语言,用指针将两个字符串连在一起哪里出错了

2013-08-09 
求助,C语言,用指针将两个字符串连在一起哪里出错了/* Note:Your choice is C IDE */#include stdio.hvoi

求助,C语言,用指针将两个字符串连在一起哪里出错了
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
char s[]="hello!";
    char a[]="now is the time";
   char *ps=s;
   char *pa=a;
   while(*ps!='\0')
ps++;
  while(*pa!='\0')
  *(ps++)=*(pa++);
  *ps='\0';
printf("%s",s);   
}
[解决办法]

char s[] = "hello!";数组越界了
可以改成char s[30] = "hello!";

[解决办法]

#include "stdio.h"
void main()
{
    char s[]="hello!"; //这样写错,但是系统就会默认分配sizeof("hello!")的字节数
                          //的内存空间给到 char数组 s的,
    char a[]="now is the time";
    char *ps=s;
    char *pa=a;
    while(*ps!='\0')  //这个时候 相当于已经访问到 s结尾处的字节'\0'了,后面已经没有内存空间
       ps++;
   while(*pa!='\0')
     *(ps++)=*(pa++);  //这个时候继续做ps++操作并给它赋值,肯定越界,访问内存出错
     *ps='\0';
printf("%s",s);   

热点排行