C语言 精选真题10

void fun(char * s0,char *s1,char *s2, char *s3)
{	
	int len=strlen(s0);
	int i=0,j=0,k=0;
	char *p1=s0,*p2=s0+1,*p3=s0+2;
	while(p1<s0+len||p2<s0+len||p3<s0+len)
	{
		if(p1<s0+len)
		{
			s1[i++]=*p1;
			p1=p1+3;
		}
		if(p2<s0+len)
		{
			s2[j++]=*p2;
			p2=p2+3;
		}
		if(p3<s0+len)
		{
			s3[k++]=*p3;
			p3=p3+3;
		}
	}
	s1[i]='\0';
	s2[j]='\0';
    s3[k]='\0';
}
/*
1.字符串长度和内存访问:
使用 strlen(s0) 来获取字符串 s0 的长度。确保 s0 是一个有效的、以空字符 '\0' 结尾的字符串。
访问字符串时,必须确保不会超出字符串的边界。在这个函数中,通过比较指针 p1, p2, p3 与 s0+len 来防止越界。
2.指针运算:
p1, p2, p3 分别初始化为指向 s0 的第一个、第二个和第三个字符的指针。
在循环中,这些指针分别递增,以遍历字符串 s0。
3.循环条件:
循环继续执行,直到所有三个指针都超出字符串 s0 的末尾。使用 ||(逻辑或)确保只要任何一个指针没有到达字符串末尾,循环就继续。
4.字符串终止:
在循环结束后,必须手动在 s1, s2, s3 的末尾添加空字符 '\0',以确保它们是正确终止的字符串。
*/

错误代码

void fun(char * s0,char *s1,char *s2, char *s3)
{
	int i=0,j=0,k=0;
	char *p1=s0,*p2=s0+1,*p3=s0+2;
	while(*p1!=' '||*p2!=' '||*p3!=' ')//不能将字符是否为空判断是否结束,因为字符串中可能含有空格
	{
		for(i;*p1!=' ';i++)            //遍历的条件:指针小于字符串的长度
		{
			s1[i++]=*p1;
			p1=p1+3;
		}
		for(j;*p2!=' ';j++)
		{
			s2[j++]=*p2;
			p2=p2+3;
		}
		for(k;*p3!=' ';k++)
		{
			s3[k++]=*p3;
			p3=p3+3;
		}
	}
	s1[i]='\0';
	s2[j]='\0';
	s3[k]='\0';
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值