| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1689 人关注过本帖
标题:[求助]关于分隔符
取消只看楼主 加入收藏
金为床兮银为椅
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2006-3-20
收藏
 问题点数:0 回复次数:3 
[求助]关于分隔符

大家帮忙想想

题目 定义一个函数 参数 一个字符串(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;
};

搜索更多相关主题的帖子: asdf deli 字符 分隔 index 
2006-05-23 16:20
金为床兮银为椅
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2006-3-20
收藏
得分:0 
真恶心,我的第一楼的说明帖子竟然被删除了。

我的目的是大家帮我想想 有没有别的方法,标题不让那么写,所以改了题目,让楼上的兄弟误会了。我的程序是正确的。

努力学习C、C++、LINUX、ORACLE、ENGLISH,累死为止。
2006-05-23 20:30
金为床兮银为椅
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2006-3-20
收藏
得分:0 
可以,
但是,建议main中不要写太多的代码去完成子功能。

努力学习C、C++、LINUX、ORACLE、ENGLISH,累死为止。
2006-05-24 08:52
金为床兮银为椅
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2006-3-20
收藏
得分:0 
sunshining为什么你总出汗呢?
你的程序没有我的程序友好。

努力学习C、C++、LINUX、ORACLE、ENGLISH,累死为止。
2006-05-24 11:09
快速回复:[求助]关于分隔符
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020215 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved