您的位置:首页 > 编程语言 > C语言/C++

带分割符的参数提取 C语言

2016-07-27 00:14 369 查看
编译环境:VC 6.0++ ,Windows 10

函数原型arguments_separator(char *str,char separator);

参数说明:

参数作用
str带分隔符的参数字符串
separator分隔符
注:由于空格也可以作为分隔符,因此若用其他符号做空格时,不得有多余的空格。若以空格作为分隔符,则可以随意插入空格

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>

#define MAXARG		5
#define MAXARGLENGTH	32

char args[MAXARG][MAXARGLENGTH];

void get_next_argument(char **str1,char *arg,char separator)
{
char *str = *str1;
char *pstart = str;
char *pend = str;
char *test = strchr(str,separator);
if(NULL == test)
return;

       while(separator == pstart[0])
{
++pstart;
if('\0' == pstart[0])
{
*str1 = "\0";
return;
}
}

pend = pstart+1;

while(separator != pend[0] && '\0' != pend[0])
++pend;

strncpy(arg,pstart,pend-pstart);
arg[pend-pstart+1]='\0';
//	snprintf(arg,pend-pstart,"%s",pstart);
*str1 = pend;
}

void arguments_separator(char *str,char separator)
{
int i=0;
while(strlen(str))
{
get_next_argument(&str,args[i++],separator);
}
}

void main()
{

int i=0;
arguments_separator("    1003 1004 dsdsdsdsd 3434  dscdc12121212121  ",' ');
for(;i<MAXARG;++i)
printf("%s\n",strlen(args[i])==0?"format error!":args[i]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c