嵌入式学习日记(十三)
来源:互联网 发布:东莞大朗淘宝电商培训 编辑:程序博客网 时间: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
今天主要讲述了字符串和指针,加强了对指针的理解。
阅读全文
0 0
- 嵌入式学习日记(十三)
- 嵌入式学习日记(一)
- 嵌入式学习日记(二)
- 嵌入式学习日记(三)
- 嵌入式学习日记(四)
- 嵌入式学习日记(五)
- 嵌入式学习日记(六)
- 嵌入式学习日记(七)
- 嵌入式学习日记(八)
- 嵌入式学习日记(九)
- 嵌入式学习日记(十)
- 嵌入式学习日记(十一)
- 嵌入式学习日记(十二)
- 嵌入式学习日记(十四)
- 学习嵌入式日记
- GPU(CUDA)学习日记(十三)------ CUDA内存简介
- GPU(CUDA)学习日记(十三)------ CUDA内存简介
- GPU(CUDA)学习日记(十三)------ CUDA内存简介
- Angularjs中的$Http与$resource
- jq和js的区别
- Jquery Easyui验证组件ValidateBox使用详解
- 版本控制器---GitHub浅学
- 使用Xshell在Windows系统和Linux系统之间进行文件传输
- 嵌入式学习日记(十三)
- 胖客户端和瘦客户端
- jenkins,maven--创建maven项目的任务
- 今天学习spring mybatis整合时遇到一个错误java.lang.Exception: DEBUG STACK TRACE for PoolBackedDataSource.close()
- 新版谷歌浏览器怎么查找和改变编码格式
- css学习总结
- nginx的SSI
- java从入门到入土(log4j)
- battery service 修改 52832