关于返回字符串数组的示例
2007-08-30 17:34
344 查看
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
/**//*
功能:获取字符串中某指定字符的个数
参数:(in)buf:原字符串。
(in)c :某字符。
返回值:返回获取的个数。
*/
int getcnum(char *buf,char c)
...{
int i=0;
int num=0;
for(i;i<strlen(buf);i++)
...{
if(buf[i]==c)
...{num++;}
}
return num;
}
/**//*
功能:取“*** ***&*** ***&*** ***&…”形式字符串中以‘&’分割开的的所有子串。
参数:(in)recvbuf:原字符串。
(out)strs :返回的字符串数组。
(out)n : 字符串数组中包含的字符串的个数。
返回值:0:ok ;-1:fail;
注意: 注意在外部释放空间。
*/
int getstrs(char *recvbuf,char ***strs,int *n)
...{
char **dest;
int num =getcnum(recvbuf,'&');//获取字符串中‘&’的个数
dest =(char **)malloc(sizeof(char*)*(num+1));
if(!dest)
...{
*strs=0; //注意
return -1;
}
char *sub;
int j=0;
for(j;j<=num;j++)
...{
int num=0;//对应字符串中的字符个数。
//如果第一个字符是‘&’,就将首地址向后移1位。
if(*recvbuf=='&')
...{
recvbuf++;
}
sub =recvbuf;
recvbuf =strchr(recvbuf,'&');
if(!recvbuf)//如何没有找到,就认为是最后一个子串。把最后一个元素的位置给recvbuf。并跳出循环。
...{
num =strlen(sub);
dest[j] = (char*)malloc(num+1);
strcpy(dest[j],sub);
}
else
...{
num =recvbuf - sub;
dest[j] = (char*)malloc(num+1);
strncpy(dest[j],sub,num);
}
dest[j][num]=0;
//printf("dest[%d] = %s ",j,dest[j]);
*strs =dest;
}
*n =j;
return 0;
}
int main()
...{
char *recvbuf="111 5gh 111&22fddf 2 222&333 3ff 33&444 fff ff";
char **strs;
int n;
getstrs(recvbuf,&strs,&n);
int i=0;
for(i;i<n;i++)
...{
printf("%s ",strs[i]);
}
}
相关文章推荐
- 从ATL中返回字符串数组到JavaScript的示例
- 查找字符串中对应的字符并返回数组位置
- 关于数组与字符串输入的问题-C++版 推荐
- C和java中关于字符串与字符数组的定义和转化
- 关于数组返回
- C 语言 实现 字符串 分割 函数(返回"二维字符数组",及分割后的字符数组的长度)
- php字符串与byte字节数组转化类示例
- 关于PHP数组转字符串详细介绍
- [Oracle]分割字符串返回数组
- 关于字符串、数组的strlen()和sizeof()
- 关于动态数组、静态数组转换为字符串的一些问题 - 给 "厨师" 的回复
- 存储过程返回数组对象示例代码
- C#封送二维字符串数组到C++的示例
- VC标准DLL中返回字符串数组给VB
- 关于字符串数组赋值的问题--java.lang.NullPointerException异常
- Lua教程(五):C/C++操作Lua数组和字符串示例
- C语言实现用指定字符切割字符串并返回数组
- 关于MD5加密中byte数组转换成16进制字符串的研究
- 关于字符串常量指针和字符串数组的区别
- 关于算法—— 一维字符串数组之间组合问题的C#实现