無題
Posted: 2010年9月16日(木) 18:29
文字列xに文字列yが含まれるかどうかを判定する関数str_comp(char [/url], char [/url])を作成せよ.この関数を用いて、入力されたひと つめの文字列にふたつめの文字列が含まれているかを判定するプログラムを作成せ よ。
% ./compare
文字列x (64字まで)? University
文字列y (64字まで)? Univ
"Ritsumeikan-University"に"Univ"は含まれます.
% ./compare
文字列x (64字まで)? University
文字列y (64字まで)? city
"University"に"city"は含まれません.
というもんだいで自分が書いたソースをコンパイルして、実行して、ははじめが「University」でその次がsityで入力すると含まれませんと表示されます。しかし、ほかにいろいろ実行してためしていたらうまくいったのもあるので少しプログラミングが間違っているのではないかと思いどこを直せばよいか質問したいと思います。
自分の書いたソース↓
#include<stdio.h>
# define SIZE 64
int str_comp(char x[/url],char y[/url]);
int main(void){
int i,j;
char buf[SIZE],don[SIZE];
printf("文字列x (64字まで)? ");
fgets(buf,SIZE,stdin);
printf("文字列y (64字まで)? ");
fgets(don,SIZE,stdin);
//bufをポインタを動かす
for(i=0 ;i< SIZE ;i++){
if(buf=='\0'){
break;
}
else if(buf == '\n'){
buf='\0';
}
}
for(j=0 ;j<SIZE ;j++){
if(don[j]=='\0')
break;
else if(don[j]=='\n')
don[j] = '\0';
}
j = str_comp(buf,don);
if(j==1){
printf("%sに%sはふくまれています\n",buf,don);
}
else{
printf("%sに%sはふくまれていません\n",buf,don);
}
}
int str_comp(char x[/url],char y[/url]){
int i,j;
i = 0;
j=0;
for(;;){
if(x == y[j]){
i++;
j++;
if(x != '\0' || y[j] != '\0'){
return 1;
break;
}
else if(x != y[j]){
break;
}
}
else{
i++;
break;
}
}
return 0;
}
% ./compare
文字列x (64字まで)? University
文字列y (64字まで)? Univ
"Ritsumeikan-University"に"Univ"は含まれます.
% ./compare
文字列x (64字まで)? University
文字列y (64字まで)? city
"University"に"city"は含まれません.
というもんだいで自分が書いたソースをコンパイルして、実行して、ははじめが「University」でその次がsityで入力すると含まれませんと表示されます。しかし、ほかにいろいろ実行してためしていたらうまくいったのもあるので少しプログラミングが間違っているのではないかと思いどこを直せばよいか質問したいと思います。
自分の書いたソース↓
#include<stdio.h>
# define SIZE 64
int str_comp(char x[/url],char y[/url]);
int main(void){
int i,j;
char buf[SIZE],don[SIZE];
printf("文字列x (64字まで)? ");
fgets(buf,SIZE,stdin);
printf("文字列y (64字まで)? ");
fgets(don,SIZE,stdin);
//bufをポインタを動かす
for(i=0 ;i< SIZE ;i++){
if(buf=='\0'){
break;
}
else if(buf == '\n'){
buf='\0';
}
}
for(j=0 ;j<SIZE ;j++){
if(don[j]=='\0')
break;
else if(don[j]=='\n')
don[j] = '\0';
}
j = str_comp(buf,don);
if(j==1){
printf("%sに%sはふくまれています\n",buf,don);
}
else{
printf("%sに%sはふくまれていません\n",buf,don);
}
}
int str_comp(char x[/url],char y[/url]){
int i,j;
i = 0;
j=0;
for(;;){
if(x == y[j]){
i++;
j++;
if(x != '\0' || y[j] != '\0'){
return 1;
break;
}
else if(x != y[j]){
break;
}
}
else{
i++;
break;
}
}
return 0;
}