プログラミングの問題について
Posted: 2011年1月28日(金) 05:19
プログラムの問題で質問がありますどうか回答を教えてください。
文字列text[]と文字列pat[]が与えられたとき、文字列text中に文字列patが含まれるときは最初に現れるその文字列の先頭の位置(0~)を返し、含まれないときは-1を返す関数searchを作成せよ。また、その関数を用いて、2つの文字列text[]とpat[](空白は含まない)を入力すると関数searchの値を返すプログラムを作成せよ。ここでtextとpatには長さ1以上の文字列が入っているものとする。
(例:text[]=”thisisatesttextdate”の中に、pat[]=”this”は0の位置に、
pat[]=”text”は7の位置に現れる)ただし#include<string.h>や strstr()などを使わないで。
ちなみに私は、
#include<stdio.h>
#include<string.h>
int search(char text[],char pat[])
{
const char *p = strstr(text,pat);
if(p) return p -text;
return -1;
}
int main(void)
{
char text[128],pat[128];
scanf("%s %s", text, pat);
printf("%d\n", search(text,pat));
return 0;
}
この様に編集すると、
thisisatesttextdata
this
と入力すると
0
と画面に表示され
thisisatesttextdata
test
と入力すると
7
と画面に表示され
thisisatesttextdata
abc
と入力すると
-1
と画面に表示されました。
このプログラムを#include<string.h>や strstr()などを使わないでできるプログラムを教えてください。よろしくお願いします。
文字列text[]と文字列pat[]が与えられたとき、文字列text中に文字列patが含まれるときは最初に現れるその文字列の先頭の位置(0~)を返し、含まれないときは-1を返す関数searchを作成せよ。また、その関数を用いて、2つの文字列text[]とpat[](空白は含まない)を入力すると関数searchの値を返すプログラムを作成せよ。ここでtextとpatには長さ1以上の文字列が入っているものとする。
(例:text[]=”thisisatesttextdate”の中に、pat[]=”this”は0の位置に、
pat[]=”text”は7の位置に現れる)ただし#include<string.h>や strstr()などを使わないで。
ちなみに私は、
#include<stdio.h>
#include<string.h>
int search(char text[],char pat[])
{
const char *p = strstr(text,pat);
if(p) return p -text;
return -1;
}
int main(void)
{
char text[128],pat[128];
scanf("%s %s", text, pat);
printf("%d\n", search(text,pat));
return 0;
}
この様に編集すると、
thisisatesttextdata
this
と入力すると
0
と画面に表示され
thisisatesttextdata
test
と入力すると
7
と画面に表示され
thisisatesttextdata
abc
と入力すると
-1
と画面に表示されました。
このプログラムを#include<string.h>や strstr()などを使わないでできるプログラムを教えてください。よろしくお願いします。