1.将字符串a的数据复制到字符串b中
(5.用for循环
和指针
来实现 )------注释掉部分采用的是此方法
#include <stdio.h>
int main()
{void copy_string(char from[], char to[]);char a[]="I am a student.";//char a[11];//for (int i = 0; i < 10; i++)//{// scanf("%c", &a[i]);//}char b[] = "You are a teacher.";printf("string a=%s\nstring b=%s\n", a, b);printf("copy string a to string b:\n");copy_string(a, b);printf("\nstring a=%s\nstring b=%s\n", a, b);return 0;
}
void copy_string(char from[], char to[])
{int i = 0;while (from[i] != '\0'){to[i] = from[i];i++;}to[i] = '\0';
}
2.char * str_copy
char* str_copy1(char* d, char* s);
char* str_copy2(char* d, char* s);
char* str_copy3(char* d, char* s);int main(void)
{char d[] = "qwerrt";char s[] = "asdf213";char* p;//p = str_copy1(d,s);//p = str_copy2(d,s);p = str_copy3(d, s);puts(p);// printf("%s\n",p);return 0;
}char* str_copy1(char* d, char* s)
{int i=0;while (s[i] != '\0') {d[i] = s[i];i++;}d[i] = '\0';return d;
}char* str_copy2(char* d, char* s)
{if (d == NULL || s == NULL)return NULL;if (d == s)return d;char* t = d;while ((*d++ = *s++) != '\0');return t;
}char* str_copy3(char* d, char* s)
{char* pd = d, * ps = s;int i = 0, nd = 0, sd = 0;while (*pd != '\0') { //计算目标字符串长度nd++;pd++;}while (*ps != '\0'){ //计算源字符串长度sd++;ps++;}int dif = nd - sd; //地址差if (dif < 0){while (d[i] != '\0') {d[i] = s[i];i++;}d[i] = '\0';}else {while (s[i] != '\0') {d[i] = s[i];i++;}d[i] = '\0';}return d;
}
3.数组的方式实现(访问下标)
#include<stdio.h>//第一种方法:使用数组下标访问
void Copy1(char* des, char* src)
{int i;for (i = 0; src[i] != '\0'; i++)//当src[i]出现'\0'时,代表字符串遍历结束{des[i] = src[i];//给des[i]赋值}des[i] = '\0';//给复制好的des[i]的结尾加上'\0',代表字符串的结束
}
int main()
{char arr[10] = "abcdefg";char brr[10];Copy1(brr, arr);//调用函数1printf("holle world %s", brr);//输出复制好的字符串数组brrprintf("\n");return 0;
}
4.使用指针解引用的方式实现
//第一种方法:使用指针解引用访问(原理:利用p[i]等价于*(p+i))
#include<stdio.h>void Copy2(char* des, char* src)
{int i;for (i = 0; *(src + i) != '\0'; i++)//当src出现'\0'时,代表字符串遍历结束{*(des + i) = *(src + i);//给des赋值}*(des + i) = '\0';//给复制好的des的结尾加上'\0',代表字符串的结束
}
int main()
{char arr[10] = "abcdefg";char brr[10];Copy2(brr, arr);//调用函数2printf("holle world %s", brr);//输出复制好的字符串数组brrprintf("\n");return 0;
}
编著注:以上对本小题的代码编写的多种方法,欢迎大家收藏借鉴并转发;
以上代码仅供参考,如有问题欢迎大家在留言区批评指正;
版权所有,翻印必究,如有雷同纯属巧合,转载请注明出处。
By CRH380AJ2808 2022.06.09
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/JH13thpig/article/details/125183968
————————————————