大家帮忙想想
题目 定义一个函数 参数 一个字符串(input),分隔符(deli)输出位置(index)输出字符串(outbufy)输出字符串长度(outbuflen)
完成功能举例: 比如给定字符串" sf asf as dfs",(注意字符串第一个符号是空格)假定deli是空格,如果index等于0则输出错误(错误类型可以参考注释),如果index等于1则输出sf,2输出asf,。。。。。
"as asdf asdf asdf":假定deli是空格,如果index等于0,则输出是as,1输出asdf。。。。。。。。
下面是我编写的
#include <string.h>
#include <stdio.h>
int GetPart(char *input, char deli, int index, char *outbufy, int outbuflen);
int main(void)
{
int i;
int j;
char out[30];
for(i = 0; i < 30; i++)
{
out[i] = 0;
}
for (j = 0; j < 10; j++)
{
i = GetPart(" sf asf as dfs", ' ', j, out, sizeof(out));
printf("\n结果:(%s)", out);
printf("\n返回值:(%d)",i);
}
return 0;
}
/*返回值
//1: no deli
//0: 正确
//-1 : no input
//-2 : index < 0
//-3 : index too large
//-4 : 第一个就是deli而且要求deli=0
*/
int GetPart(char *inputx, char deli, int index, char *outbufy, int outbuflen)
{
bool stop = true;
int delinum;//deli的数目
int x_num = 0;//变化的deli数目
int y_len = 0;//要拷贝的输出字符串的长度
char *xautop = inputx;
char *lockp = xautop;
if (inputx == NULL)
{
return -1;
}
if (index < 0)
{
return -2;
}
while (*xautop != '\0')
{
if (*xautop == deli)
{
x_num++;
}
xautop++;
}
delinum = x_num;
if (index > delinum)
{
strcpy(outbufy, "");
return -3;
}
x_num = 0;
xautop = inputx;
while ((x_num - 1) != index)
{
if((*inputx == deli) && (index == 0))
{
return -4;
}
if (*xautop == deli)
{
x_num++;
}
if ((x_num == index) && (stop))
{
lockp = xautop;
if (*lockp == deli)
{
lockp++;
}
if (*xautop == deli)
{
xautop++;
}
y_len = 0;
stop = false;
}
if (*xautop == '\0')
{
y_len++;
break;
}
xautop++;
y_len++;
}
if (x_num ==0)
{
return 1;
}
strncpy(outbufy, lockp, (y_len - 1));
outbufy[y_len - 1] = '\0';
return 0;
};