嵌入式学习日记(十三)

来源:互联网 发布:东莞大朗淘宝电商培训 编辑:程序博客网 时间:2024/05/24 04:42

2017-07-21

今天是嵌入式学习的第十三天。


今天主要是仿写了string中的strlen和strcpy,同时做了一些修改。


改写的strlen,避免越界访问

  • strlen源代码如下:
//-------------------------------------------------my_strlen.c#include <stdio.h>int my_strlen(char *str,int size){  int len=0;  while(len<(size-1) && *str++!='\0')len++;  return len;}int main(){  char buffer[1024];  printf("please input a string:\n");  scanf("%s",buffer);  printf("size:%d\n",my_strlen(buffer,sizeof(buffer)));  return 0;}


  • strlen结果如下:
$  ./my_strlenplease input a string:asdfgadfsize:8

改写的strcpy,避免接收的数组大小小于想要拷贝的大小
* strcpy源代码如下:

//-------------------------------------------------my_strcpy.c#include <stdio.h>int my_strcpy(char *to,int to_len,char *from,int from_len){  int i;  if(to_len<from_len)    return -1;  for(i=0;i<from_len-1;i++)  {    if('\0'==from[i])    {      to[i]=' ';    }    else    {      to[i]=from[i];    }  }  to[from_len]='\0';  return 0;}int main(){  char a[20];  char b[20]="asdfsadf\0asrert5";  printf("a:%s\n",a);  printf("b:%s\n",b);  if(-1==my_strcpy(a,sizeof(a),b,sizeof(b)))  {    printf("copy error!\n");    return -1;  }  else  {    printf("%s\n",a);  }  return 0;}


  • strcpy结果如下:
$  ./my_strcpy a:�_�b:asdfsadfasdfsadf asrert5  




今天主要讲述了字符串和指针,加强了对指针的理解。

原创粉丝点击