注册 登录
编程论坛 C语言论坛

不使用strcat()函数进行字符串拼接,但无法实现

hffjhhh 发布于 2020-05-31 13:09, 1828 次点击
不使用strcat()函数进行字符串拼接,但无法实现。原因在哪?代码如下:
程序代码:
#include"stdio.h"
void function(char *p,char *q){
    int n=0;
    int m=0;
    for(;p[n]!='\0';)
        n++;
    for(;q[m]!='\0';)
        p[++n]=q[m++];
    p[n]='\0';
    printf("%s",p);
}
int main(void){
    char n[100]="asdfgh";
    char m[100]="zxcvbnm";
    function(n,m);
    return 0;
}

5 回复
#2
forever742020-05-31 13:16
p[n++]=q[m++];
另外不该在这个函数里输出,应该回主函数去输出。
#3
hffjhhh2020-05-31 13:20
以下是引用forever74在2020-5-31 13:16:29的发言:

p[n++]=q[m++];
另外不该在这个函数里输出,应该回主函数去输出。

改成p[n++]=q[m++];后,在这个function函数里输出也可以实现。
#4
fulltimelink2020-05-31 14:38
memcpy能用么
#5
forever742020-05-31 18:47
以下是引用hffjhhh在2020-5-31 13:20:30的发言:


改成p[n++]=q[m++];后,在这个function函数里输出也可以实现。


可以实现是可以实现,
但是我们程序猿一族应该对自己有更高的要求是吧?
我看见类似的问题就要想,那个库函数如果是我写,我该怎么写?
于是,一个基本的要求就是非IO函数不要带有IO的蛇足。
一块砖如果长了四条腿,固然可以作为摆件,它就没法用来砌墙了。

相信我,一只猿要进化成狮,就要向这个方向思考。

[此贴子已经被作者于2020-5-31 18:52编辑过]

#6
ditg2020-06-02 04:38
有点失眠,实现个linux版的;书上现在都是用"stdio.h"了吗?(纯属请教)

static inline char *function(char *dest, const char *src)
{
    __asm__("cld;repne;scasb;decq %0;1:lodsb;stosb;testb %%al,%%al;jne 1b"
                    ::"D"(dest),"S"(src),"a"(0),"c"(0xffffffffffffffff));
    return dest;
}
1