c++题 编写一个函数,int find(char s[ ],char t[ ]) 干函数在字符串s中查找字符串t

若找到t,字符串t在字符串s中的位置(整数值)否则返回-1(用数组和两重循环来实现该函数)仅需在find的花括号中添加若干语句。#include<iostream.h>#... 若找到t,字符串t在字符串s中的位置(整数值)否则返回-1(用数组和两重循环来实现该函数) 仅需在find的花括号中添加若干语句。
#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
#include <string>

int find(char s[ ], char t[ ]) ;
void wriDat() ;
const int MAXLINE = 256;
int main( )
{
char source[MAXLINE], target[MAXLINE];
cout << "Please input a string for searching:\n";
cin.getline(source, MAXLINE);
cout << "Please input a string you want to find:\n";
cin.getline(target, MAXLINE);
int intPos = find(source, target);
if(intPos >= 0)
cout << "Finding it. The target string is at index " << intPos << " of the source string \n";
else
cout << "Not finding it.\n";
wriDat() ;
return 0;
}
int find(char s[ ], char t[ ])
{

}

/* 读取数据文件并写结果文件, 考生无需修改, 否则后果自负 */
void wriDat()
{
fstream rFile, wFile ;
char source[MAXLINE], target[MAXLINE], i = 0 ;

rFile.open("K:\\K016\\61001622\\in.dat", ios::nocreate | ios::in) ;
if(!rFile) {
cout << "在考生文件夹下数据文件in.dat不存在" << endl ;
return ;
}
wFile.open("K:\\K016\\61001622\\out.dat", ios::out) ;
while (!rFile.eof() && i < 3) {
rFile.getline(source, MAXLINE) ;
rFile.getline(target, MAXLINE) ;
int intPos = find(source, target) ;
if(intPos >= 0)
wFile << "Finding it. The target string is at index " << intPos << " of the source string.\n" ;
else
wFile << "Not finding it.\n" ;
i++ ;
}
rFile.close() ;
wFile.close() ;
}
展开
 我来答
zyl102600
2010-09-11 · TA获得超过678个赞
知道小有建树答主
回答量:702
采纳率:100%
帮助的人:722万
展开全部
1楼老弟,看清题目要求

int find(char s[ ], char t[ ])
{
int nret = -1;
size_t len1 = strlen(s);
size_t len2 = strlen(t);

if (len1 == 0
|| len2 == 0
|| len2 > len1)
{
return nret;
}

for (int i=0;i<=len1-len2;i++)
{
if (s[i]==t[0])
{
if (len2 == 1)
{
return i;
}
for (int k=1;k<len2;k++)
{
if ( s[i+k] != t[k])
{
break;
}
if (k == len2 - 1)
{
return i;
}
}
}
}

return nret;
}

经过测试,这个方法比楼上的方法安全(预防了空指针),且运行时间短(约为楼上方法运行时间的1/3).

参考资料: 软宝工作室 旺旺ID:zy102600

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-09-11
展开全部
int find(char s[], char t[])
{
int slen = 0, tlen = 0;
// 计算s ,t 的长度
while(s[slen] != '\0') slen++;
while(t[tlen] != '\0') tlen++;
// 如果允许用 strlen(); 的话 直接用strlen();

int pos = -1;
for(int i=0,j=0; i<=slen-tlen; i++)
{
for(j=0; j<tlen; j++)
{
if(s[i+j] != t[j])
break;
}
if(j == tlen)
pos = i;
}
return pos;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
米兰箭客
2010-09-11 · 超过11用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:0
展开全部
char* p=strstr(s,t);
if(NULL==p)return -1;
else return(p-s);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式