C语言将字符串每个字符后面加上一个字符串?

C语言将字符串每个字符后面加上一个字符串?,第1张

C语言代码和运行结果如下:

输出符合样例,望采纳~

附源码:

#include <stdio.h>

#include <string.h>

void join(char *s1, char *s2) {

    char s[100]// 保存拼接结果

    int i, j, k = 0

    for (i = 0s1[i] != '\0'++i) {

        s[k++] = s1[i]// 先复制s1中的1个字符

        for (j = 0s2[j] != '\0'++j)

            s[k++] = s2[j]// 再拼接整个s2

    }

    strcpy(s1, s)// 最后再将拼接好的s复制回s1

}

int main() {

    char s1[100] = "ABCD"

    char s2[100] = "*"

    join(s1, s2)

    printf("%s\n", s1)

    return 0

}

空格处填上'\0',其ASCII码的值为0,这是字符串结束符。

以下内容摘自网络。

对字符数组,有以下几种定义方法:

1)char str[]="12345"

或给字符串加上大括号:char str[]={"12345"}

这种方法定义时,系统会自动在字符串的末尾加上字符串结束符,即 ‘\0’,

2)char str[10]={'1','2','3','4','5'}

这种方法定义时,系统会自动从未初始化的元素开始,将之后的元素赋为\0,如上面的数组str中的元素实际上是:'1','2','3','4','5','\0','\0','\0','\0','\0'

3)char str[]={'1','2','3','4','5'}

这种方法定义时,系统不会自动在字符串的末尾加上字符串结束符

此时用sizeof()函数可以正确求出其所占的内存大小;但用strlen()函数不能正确求出其长度,因为strlen是通过\0判断字符串结束的。

所以,采用该方法定义时,一般人为地加上\0,即char str[]={'1','2','3','4','5', '\0'}

gets函数是专门用来输入字符串的,当最后打入'\n'时前面的输入才起作用,而且gets会把最后的'\n'接收了并转换成'\0'存入接收字符串的空间。所以用gets不用加入'\0'。

scanf在用%s控制时也接收字符串,它也能在输入'\n'后把前面输入的字符存入接收空间并在后面自动加一个'\0',所以也不用人工再添加'\0'。不过scanf这时不会接收'\n',会把'\n'遗留在输入缓冲区里,在后面接着要接收字符的话会引起出错,需要当心。

getchar不是接收字符串的,一次只接收一个字符,当要把这些字符组织成字符串时,要人工在最后加一个'\0'。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11902722.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存