c语言中字符串的复制
c语言中字符串的复制。
1、
#include <stdio.h> char* str_copy(char *d, const char *s) //函数的返回值为指向char型的指针型, 形参为两个指向char型的指针。 { char *t = d; // 指针t等于指针d,指针d为指向字符串第一个字符的指针,因此t为指向字符串第一个字符的指针, while(*d++ = *s++) // 其实单纯赋值的话,本句就已经解决 , d和s都为指向数组第一个元素的指针,依次后移、赋值、知道空字符,赋值表达式的结果为左操作数的值和结果。 ; return t; // t为指向d的第一个字符的指针,因此t的行为和字符串(数组)本身的行为一样。 } int main(void) { char str[128] = "ABCD"; // str初始值 char tmp[128]; printf("str: %s\n", str); printf("tmp = ", tmp); scanf("%s", tmp); // tmp\ tmp ?????? str_copy(str, tmp); //传入两个字符串(数组)。 printf("str: %s\n", str); // 显示复制后的结果 return 0; }
2、不正确的字符串复制 ???
#include <stdio.h> char* str_copy(char *d, const char *s) { char *t = d; while(*d++ = *s++) ; return t; } int main(void) { char *ptr = "ABCD"; //此处使用指针实现字符串 char tmp[128]; printf("ptr: %s\n", ptr); printf("tmp = ", tmp); scanf("%s", tmp); str_copy(ptr, tmp);// 改写了字符串字面量 ?? 可能会写入非空的内存空间。??? printf("ptr : %s\n", ptr); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2020-05-31 利用phylip软件对SNP数据构建进化树