検索させるプログラムです。
文字列を入力させて、その後に検索キー入力をし、先ほど入力した文字列のなかから
一致するものを検索するプログラムです。
#include <stdio.h>
int searchidx(char a[],char key)
{
int i=0,j=0;
a[3]=key;
for(i=0;i<3;i++){
if (a[i] == key){
j++;
break;
}
}
if(j==0){
return(-1);
}else{
return(i);
}
}
int main(void)
{
int a,i;
char ky=0;
char x[3];
printf("3個の文字を入力してください。\n");
for (i = 0; i < 3; i++) {
printf("x[%d]:", i);
scanf("%s", &x[i]);
}
printf("検索キー:");
scanf("%s", &ky);
a=searchidx(x,ky);
if (a == -1){
puts("一致しません。");
}else{
printf("%d\n",a);
printf("%s\n",x[a]);
}
}
メイン関数で文字列を入力させ、その配列とキー値をサーチ関数に渡して
一致した時の配列の添え字をaに返してメイン関数で文字列の配列のその添え字x[a]で表示されるのではないか?と思ってそうしてるつもりなのですが
実行してみると最後の一致した結果を表示させるところでエラーがでます。
表示させるところの前のprintfで一致するものの要素数が帰ってくるかどうかのチェックを入れてますが
ちゃんと添え字番号は正しく返ってくるのになぜ最後の
printf("%s\n",x[a]);
ではダメなのでしょうか?
それとscanfって%sのときは&いらなかったと思うのですが
この場合&を入れないとエラーになってしまいます。
お礼
一応次のように出来ました。 アドバイスありがとうございました。 #include <stdio.h> int main(void) { int i,j; char str1[80],str2[80]; printf("同じ長さの文字列を2つ入力しなさい\n"); scanf("%s",str1); scanf("%s",str2); i=0; j=0; while (str1[i]!='\0') { if (str1[i]!=str2[i]) { j++; }i++; } if (j==0) { printf("等しい文字列を入力"); } else { printf("異なる文字列を入力"); } return 0; }