常见问题小结

2018-09-06  本文已影响11人  带着白卡去旅行

错误一 越界(编译器会自动添加‘\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");
}
上一篇 下一篇

猜你喜欢

热点阅读