字符串基本操作
//指针操作
void StatString1(char *pInputString, int *pDigitNum)
{
*pDigitNum = 0;
printf("%s\n",pInputString);
while(*pInputString!='\0'){ // for(;*pInputString!='\0';pInputString++){...}
if(*pInputString>='0' && *pInputString<='9'){
(*pDigitNum)++;
}
pInputString++;
}
}
//数组下标操作
void StatString2(char *pInputString, int *pDigitNum)
{
*pDigitNum = 0;
int i = 0;
for(i=0;pInputString[i]!='\0';i++){
if(pInputString[i]>='0' && pInputString[i]<='9'){
(*pDigitNum)++;
}
}
}
int main()
{
char *pInputString = "asdfg14fdf3f";
int pDigitNum;
StatString1(pInputString,&pDigitNum); // 传入字符串指针,int变量地址
printf("%d\n",pDigitNum);
return 0;
}
memcpy内存拷贝
#include <stdio.h>
void strcopy(char **target, char *source){
if(source == NULL) return ;
unsigned int len = strlen(source);
*target = (char*)malloc(len+1);
memcpy(*target,source,len);
(*target)[len]='\0';
}
void strcombine(char **x, char *target, char *source){
if(source == NULL || target == NULL) return ;
unsigned int len =strlen(target)+strlen(source);
*x = (char*)malloc(len+1);
memcpy(*x,target,strlen(target));
memcpy(*x+strlen(target),source,strlen(source));
(*x)[len] = '\0';
}
void strcatch(char **t, char *x, unsigned int index, unsigned int length){
if(length==0 || x==NULL || strlen(x)<(index+length)) return;
*t = (char*)malloc(length+1);
memcpy(*t,x+index,length);
(*t)[length] = '\0';
}
int main(){
char* target = "efsj";
char* source = "abcd";
char* x="12";
char* t;
int index = 2;
int length = 3;
strcopy(&target,source);
printf("%s\n",target);
strcombine(&x,target,source);
printf("%s\n",x);
strcatch(&t,x,index,length);
printf("%s\n",t);
return 0;
}