// demo3.cpp : 定义控制台应用程序的入口点。 //程序实现从母串中找到字串,并且输出字串在母串中的位置 //audi.car@qq.com //2015年4月4日10:44:04 #include "stdafx.h" #include <iostream> using namespace std; int main() { char a[]="i boy a boy"; //母串 char b[]="boy"; //字串 int m=sizeof(a)-1;//母串长度 int n=sizeof(b)-1;//字串长度 int pos=0; //字串在母串中的位置 int temp=0; //临时工 for (int i=0;i<m;i++) { temp=i;//暂存母串数据起始位置 for (int j=0;j<n;j++) { if (a[i]!=b[j]) break; i++; if (j==n-1) { pos=temp; cout<<"字串在母串的第 "<<pos+1<<" 个位置"<<endl; } } i=temp;//串字符不匹配 返回母串原来位置的下一个字母继续查找 } return 0; }
修改了一下源码,主要是为了实现字符串的实时录入,可以进一步修改为文本单词统计程序,这个比较简单 就不上源码了。可以参考http://hi.baidu.com/audi_car/item/c3c1803c7a72a3dc1b9696ba
// demo3.cpp : 定义控制台应用程序的入口点。 //程序实现从母串中找到字串,并且输出字串在母串中的位置 //audi.car@qq.com //2015年4月4日10:44:04 // //程序改动主要为:实现了字符串的实时输入 //2015年4月4日11:46:32 #include "stdafx.h" #include <iostream> using namespace std; int main() { char a[300]; //母串 char b[10]; //字串 cout<<"请输入母串(不要超过300个字符) "; cin.getline(a,300); //getline()函数可以接受三个参数,第三个参数为输入结束符 缺省默认为回车符 cout<<"请输入字串(不超过10个字符)"; cin.getline(b,10); //cout<<strlen(a)<<endl; //int m=sizeof(a)-1;//母串长度 //int n=sizeof(b)-1;//字串长度 int m=strlen(a); int n=strlen(b); //使用strlen()函数替代sizeof()函数 int pos=-1; //字串在母串中的位置 int temp=0; //临时工 for (int i=0;i<m;i++) { temp=i;//暂存母串数据起始位置 for (int j=0;j<n;j++) { if (a[i]!=b[j]) break; i++; if (j==n-1) { pos=temp; cout<<"字串在母串的第 "<<pos+1<<" 个位置"<<endl; } } i=temp;//串字符不匹配 返回母串原来位置的下一个字母继续查找 } if (pos==-1) cout<<"母串中找不到要查找的字串"<<endl; return 0; }