错误一 越界(编译器会自动添加‘\0’)
字符串大小问题 需要注意留出分配'\0'的空间内存
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main()
{
char p[3] = "123";//字符串大小问题 需要注意留出分配'\0'的空间内存
应该是 char[4]='123';
printf("p:%s",p);
printf("hello...\n");
system("pause");
}
错误二
判断指针变量 而不是判断指针变量的地址
void copy_str21(char *from, char *to)
{
if (*from = '\0' || *to!=’\0’)
{
Printf(“func copy_str21() err\n”);
return;
}
应该是:
判断指针变量 而不是判断指针变量的地址
If(from==’\0’||to==’\0’)
{
Printf(“func copy_str21() err\n”);
return;
}
字符串的拷贝
错误点
【思想 通过指针来简介的修改 str2的值】
在main函数中 应该定义的是 char*str1
而且:注意的是 字符串形参不要轻易改变 所以加 const
char *str1 = "hello";
char str2[10];
//char str1 ="123";
//char str2[4];
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
void Mystrcpy(char *dst, const char *src)
{
if (dst == NULL && src == NULL)
{
return;
}
while (*src != '\0')
{
*dst = *src;
dst++;
src++;
}
*dst = '\0';
printf("%s",dst);
}
int main()
{
char *str1 = "hello";
char str2[10];
//char str1 ="123";
//char str2[4];
Mystrcpy(str2, str1);
printf("%s", str2);
// printf("hello...\n");
system("pause");
}