回 帖 发 新 帖 刷新版面

主题:有点郁闷 怎么得不到结果 字符串连接的 问题

#include<stdio.h>
#include<stdlib.h>

void strconect(char*,char*);
void main()
{
    char *p1;
    int i=0;
    p1=(char*)malloc(1*sizeof(char));
      
     while((*(p1+i)=getchar())!='\n')
     {
         i++;
         p1=(char*)realloc(p1,(i+1)*sizeof(char));
         
     
     }
       *(p1+i+1)='\0';
    char *p2;
    int j=0;
    p2=(char*)malloc(1*sizeof(char));
    
     while((*(p2+i)=getchar())!='\n')
     { 
         j++;
         p2=(char*)realloc(p2,(i+1)*sizeof(char));
        
     
     }
       *(p2+i+1)='\0';
        printf("the new arry is :");

        strconect(p1,p2);
        puts(p1);
    

    
}


  void strconect(char*p1,char*p2)
   {
       
       while(*p1)
       {   
           p1++; 
           
       
       }
         
       while(*p2);

       {
           *p1++=*p2++;
           
       
       }
       *(p1+1)='\0';
      
   }    
   

回复列表 (共1个回复)

沙发

改好了,主要是几个小问题,首先你在输入p1和p2时 *(p1+i+1)='\0';这句有问题,由上面循环可知
应改为*(p1+i)='\0',同理下面的p2也是如此,还有个低级错误就是在输入p2时变量是j你误用为i
第三个错误就是函数里第二个while后多了一个分号,再就是末尾句的加1不对,道理同第一个,改动如下:
#include<stdio.h>
#include<stdlib.h>

void strconect(char*,char*);
void main()
{
    char *p1;
    int i=0;
    p1=(char*)malloc(1*sizeof(char));
      
     while((*(p1+i)=getchar())!='\n')
     {
         i++;
         p1=(char*)realloc(p1,(i+1)*sizeof(char));
         
     
     }
       *(p1+i)='\0';
    char *p2;
    int j=0;
    p2=(char*)malloc(1*sizeof(char));
    
     while((*(p2+j)=getchar())!='\n')
     { 
         j++;
         p2=(char*)realloc(p2,(j+1)*sizeof(char));
        
     
     }
       *(p2+j)='\0';
        printf("the new arry is :");

        strconect(p1,p2);
        puts(p1);
        
    

    
}


  void strconect(char*p1,char*p2)
   {
       
       while(*p1)
       {   
           p1++;               
       }
                        
       while(*p2)

       {  
           *p1++=*p2++;
         
       } 
       *(p1)='\0';
      
   }    
    

我来回复

您尚未登录,请登录后再回复。点此登录或注册