整容说文库 > 程序代码 > 教育资讯

关于指针的问题,求大神急救!!!!在线等!

来源:学生作业帮助网 编辑:整容说文库 时间:2020/10/26 12:51:28 程序代码
关于指针的问题,求大神急救!!!!在线等!程序代码
C c 指针

#include<stdio.h>
void output(char a[],char b[])
{
    char *p=a;
    char *p1=b;
    int i=0;
    int k=0;
    while(1){
        if(*(p+i)=='\0')
        {
            if (*(p1+k)=='\0')
            {
                *(p+i)='\0';
                break;
            }
            else
            {
                *(p+i)=*(p1+k);
                k++;
            }
        }
        i++;
    }
     i=0;
    while (1) {
        if(*(p+i)!='\0')
        {
            printf("%c",*(p+i));
        }
        else
        {
            break;
        }
        i++;
    }
}

int main()
{
    char a[100];
    char b[100];
    scanf("%s",a);
    getchar();
    scanf("%s",b);
    getchar();
    output(a,b);
    return 0;
}


输入两个字符串后,把两字符串拼接后,会再拼接字符串里出现乱码,不知道为什么,求大神指教!!
自己顶了!!!在线等大神!
该回复于2014-07-31 09:27:10被管理员删除
gcc编译运行无误
仅供参考
#include <stdio.h>

void merger_str(char a[],char b[])
{
while(*a)
{
a++;
}
while(*b)
{
*a=*b;
a++;
b++;
}
*a='\0';
}

int main()
{
char a[100];
char b[100];
scanf("%s",a);
getchar();
scanf("%s",b);
getchar();
merger_str(a,b);
puts(a);
return 0;
}
把void output(char a[],char b[])里面的第一个while循环改成
while(1){
if(*(p+i)=='\0')
{
while(*(p1+k) != '\0')
{
*(p+i++) = *(p1+k++);
}
*(p+i) = '\0';
break;
}
i++;
}
这样写下 a[100]={0} 就行啦   至于为什么,你有没有考虑 a[100] 里面是什么值   你在赋值的那个while循环 写if(*(p+i)==100)  ....... i++ 这两句时候 有没有想到 a[100]里面j就出现一个'\0'(就是你输入字符串的结尾符 就这一个) 其余的除了你的字符串外都是随机值你怎么能保证 字符串后面全都是 '\0'   所以你先初始化全为0后你的程序可以运行   当然你也可以不用这么写循环复制语句   
       while(*(p+i)!='\0')
i++;
while(1)
{
if(*(p1+k)=='\0')
{
*(p+i)='\0';
break;
}
else
{
*(p+i)=*(p1+k);
i++;
k++;
}
}
你将复制循环语句写为我上面写的那个就可以啦
给楼上几位大神跪了....最基本的溢出都不处理一下么....
引用 7 楼 Adol1111 的回复:
给楼上几位大神跪了....最基本的溢出都不处理一下么....
这个由lz自己解决。。。
引用 7 楼 Adol1111 的回复:
给楼上几位大神跪了....最基本的溢出都不处理一下么....

    scanf("%s",a);
    getchar();
    scanf("%s",b);
    getchar();
改为
    scanf("%99[^\n]",a);
    getchar();
    scanf("%99[^\n]",b);
    getchar();
程序代码