首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求解一个分开姓和名的函数有关问题

2012-04-03 
求解一个分开姓和名的函数问题题目:通过输入姓名,比如 michaeljordan ,写个函数实现thefirstname:michae

求解一个分开姓和名的函数问题
题目:通过输入姓名,比如 "michael   jordan ",写个函数实现
the   first   name:michael
the   last   name:jordan
要求用函数;
void   split(char   MyName[])
{
int   i,j=0;
char   test[100],test1[100];
while(MyName[i]!= '   ')
{
test[i]=MyName[i];
i++;
}
printf( "the   first   name   is:%s ",test);
j=i;
while(MyName[i]!= '\0 ')
{
test1[i-j]=MyName[i];
i++;
}
printf( "the   last   name   is:%s ",test1);
}
main()
{
    split(michael   jordan);
    split(John   Doe);
}
我写了之后,发现执行第一个没有问题,执行到第二句split(a   b)的时候会保留之前一句里面的内容,也就是函数里面的数组没有执行清除操作,该怎么做,谢谢!

[解决办法]
void split(char MyName[])
{
int i=0,j=0; //初值
char test[100],test1[100];
memset(test,0,sizeof(test)); //清空
memset(test1,0,sizeof(test1));
while(MyName[i]!= ' ')
{
test[i]=MyName[i];
i++;
}
printf( "the first name is:%s\n ",test);
j=i;
while(MyName[i]!= '\0 ')
{
test1[i-j]=MyName[i];
i++;
}
printf( "the last name is:%s\n ",test1);
}

int main()
{
split( "michael jordan ");
split( "John Doe ");
}
~

[解决办法]
test,test1不用清空,在循环之后加test[i] = '\0 ';test[i-j]= '\0 ';即可
[解决办法]
可以通过清空来解决问题,但是
memset(test,0,sizeof(test));
不是很准确,sizeof(test)= 4 * 100 = 400 bytes.
我们的目的是对以test 为首的100个字节赋值为0吧。
bzero(test,100);
可以满足需求

热点排行