使用C库函数
**1.printf函数**这个非常简单。只要重定向printf函数即可。
这个是STM8L**单片机**代码,注意:如果是IAR**编译器**需要开启library-FULL
亲测在msp430,stm32,stm8l上均可使用,将1,2替换成对应单片机的函数即可
```javascript
int fputc(int ch, FILE *f)//printf
{
USART_SendData8(USART1, (uint8_t) ch);//1
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) {}//2
return ch;
}
```
2.memset()函数
```javascript
memset(void *, int, size_t);//IAR环境
```
```javascript
*memset(void *s, char val, int n);//keil环境
```
这里只讲在单片机中编程中的使用,以上是两种编译环境的memset函数,实现的功能是一样的
第一个参数:指向一个起始地址
第二个参数:任意数值(0\~255)value
第三个参数:长度n(从起始地址起连续n个字节)
从起始地址起连续n个字节,全部置为value
我们一般用来进行数组清0,非常方便,比如:
**代码语言:**javascript
**代码**运行次数:0
**运行**
AI代码解释
```javascript
memset(RevBuffer,0,sizeof(RevBuffer));//清0数组
```
```javascript
RevBuffer:字符型数组
```
3.memcpy函数
void \*memcpy(void\*dest, const void \*src, size\_t n);
从源src所指的内存地址的起始位置开始,拷贝n个字节的数据到目标dest所指的内存地址的起始位置中。
```javascript
char buf[]="123456";
char buf2;
memcpy(buf2,buf,3);
printf("%s\r\n",buf2);
输出:123
```
4.strcpy函数
strcpy是一种C语言的标准库函数,strcpy把从src地址开始且含有'\\0'结束符的字符串复制到以dest开始的地址空间,返回值的类型为char\*。
原型声明:char \*strcpy(char\* dest, const char \*src);
头文件:#include string.h) 和 #include <stdio.h>
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
```javascript
char buf[]="123";
char buf1;
strcpy(buf1,buf);
printf("%s\r\n",buf1);
```
5.atoi函数(**注意引用#include <stdlib.h>**)
(表示 ascii to integer)是把字符串转换成整型数的一个函数。
int atoi(const char \*nptr);
\*nptr:把参数 **nptr** 所指向的字符串转换为一个整数(类型为 int 型)。
```javascript
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
char *str = "1234567";
n = atoi(str);
printf("n=%d\n",n);
return 0;
}
```
memset用于数组清零很方便
页:
[1]