在终端输入多行信息,找出包含“ould”的行,并打印改行。

如:

Au,love could you and I with fate conspire

To grasp this sorry scheme of things entire,

Would not we shatter it to bitd – and then.

在终端输出上述的文字,输出

Au,love could you and I with fate conspire

Au,love could you and I with fate conspire

To grasp this sorry scheme of things entire,

Would not we shatter it to bitd – and then.

Would not we shatter it to bitd – and then.

建立一个函数输入多行字符串。

建立一个函数模拟strstr函数功能判断输入的一行信息中是否包含"ould",即"ould"是不是改行字符串的子字符串。

代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#define ROM 1000

int input(char *str,int list)
{
	char ch=0;
	int i=0;
	while((list--)&&(ch=getchar())!=EOF&&ch!='\n')
    //注意每行的限制数及有效字符,遇到结束输入
	{
		str[i++]=ch;
	}
	if(ch=='\n')
	{
		str[i++]='\n';//只输入一个字符'\n'时,保存'\n'
	}
	str[i]='\0';
	return i;
}

int match(char *dest,char *src)//模拟实现strstr功能的函数
{
	char *p=dest;//保存每次开始匹配的位置
	assert(dest);
	assert(src);	
	while(*p)
	{
		char *s1=p;
		char *s2=src;//s1和s2为实际进行匹配移动到的位置
		while(*s1&&*s2&&(*s1==*s2))
		{
			s1++;
			s2++;
		    if(*s2=='\0')//如果s2匹配完了,就说明src是dest的子字符串
		        return 1;
		}
		p++;
	}
	return 0;
}

int main()
{
	char str[ROM];
	char arr[]="ould";
	while(input(str,ROM-1))
	{
		if(match(str,arr))
		{
			printf("%s",str);
		}
	}
	system("pause");
	return 0;
}