空格隔断

方法一:对于一个字符串,我们先遍历一遍,求出它的长度strlen 并且将它的空格都变为’\0’。先把字符串的首地址给指针数组,然后定义一个变量i 作为循环变量来重新遍历这个字符串,每一次碰到’\0’,就将str[i+1]赋值给指针数组;最后再输出指针数组就完成了。`

#include<stdio.h>
#include<string.h>
#define M 100
#define N 20
int main(int argc, const char *argv[])
{
	char str[M]={0};
	gets(str);
	char *pstr[N]={0};
	pstr[0]=str;
	int len=strlen(str);
	char *p=str;
	while(*p)
	{
		if(*p==' ')
			*p='\0';
		p++;
	}
	int i=0,j=1;
	while(i<len)
	{
		if(str[i]=='\0')
			pstr[j++]=&str[i+1];
		i++;
	}
	int k=0;
	for(;k<j;k++)
	{
		printf("%s\n",pstr[k]);
	}
	return 0;
}

方法二:同样的,我们采用指针数组的方式存放隔断后的字符串。
这次,我们采用标志位的方式来作者道题。

#include<stdio.h>
#include<string.h>
#define M 100
#define N 20
int main(int argc, const char *argv[])
{
	char str[M]={0};
	printf("请输入你要隔断的字符串\n");
	gets(str);
	char *pstr[N]={0};
	char *p=str;
	int i=0;
	int j=0;
	int flag=1;
	for(i=0;str[i]!='\0';i++)
	{
		if(str[i]==' ')
		{
			str[i]='\0';
			flag=1;
			continue;
		}
		if(str[i]!='\0'&&flag==1)
		{
			pstr[j++]=&str[i];
			flag=0;
		}
	}
	int k=0;
	printf("隔断后输出如下:\n");
	for(;k<j;k++)
	{
		printf("%s\n",pstr[k]);
	}
	return 0;
}

如上代码所示:当我们在遇到空格的时候,设置该字符串的该位置为’\0’,并且置flag=1跳出该循环,当下一次进入如果碰到该字符串的下一个位置不是空格的时候,并且满足我们的标志位flag=1,他会将该位置的地址给我们的指针数组,然后把标志位置0,当下一次碰到字符之前都是0。最后跑完这个循环,把我们的指针数组打印输出就完成了这道题目。

以上运行在linux平台上,经验证都是正确的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值