一个函数如果要返回一个数组,这个数组最好不要定义成局部变量,因为局部变量传过去后,该地址的内容有可能会发生变化,所以只能定义全局变量数组作为返回参数。
定义的指针变量,该变量只能被调用或传入地址,不能进行内容操作,否则会奔溃,在stm32中会跑入错误中断中。
贴一个最近写的字符串操作的函数:
.c文件
/**
* Created by QiPing on 2018/7/20
* Describe:
* 字符串操作
* Param:
*/
#include "myString.h"
char strBuffer[50];
/**
* --------
* @since 2018-7-17
* @Param1 str-->传入字符串指针
* @Param2 startIndex-->开始截取字符串段的开始位置,从0开始数
* @Param3
* @Addition
* 截取的字符串段内容包含startIndex字符串结束的所有字符
* 字符串结束符=\0
*/
char *subString(char *str, size_t startIndex){
size_t length,i;
length = strlen((char *)str);
memset(strBuffer,0,50);
for(i=startIndex; i < length; i++){
strBuffer[i-startIndex] = str[i];
}
return strBuffer;
}
/**
* --------
* @since 2018-7-17
* @Param1 str-->传入字符串指针
* @Param2 startIndex-->开始截取字符串段的开始位置,从0开始数
* @Param3
* @Addition
* 截取的字符串段内容包含startIndex(含该字符)到endIndex(含该字符)所有字符
*/
char *subString2(char *str, size_t startIndex, size_t endIndex){
size_t i;
memset(strBuffer,0,50);
for(i=startIndex; i < endIndex; i++){
strBuffer[i-startIndex] = str[i];
}
return strBuffer;
}
.h文件
#include <stdio.h> //包含size_t
#include <string.h> //包含memset()
char *subString(char *str, size_t startIndex);
char *subString2(char *str, size_t startIndex, size_t endIndex);