文字列から文字を探すプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
しんうん

文字列から文字を探すプログラム

#1

投稿記事 by しんうん » 2年前

文字列と探したい文字を読み込んで探すプログラムが作りたかったのですが、一文字を入力する部分で失敗しました。何がダメだったのでしょうか?printfやscanfのまま解決したいです。

#include <stdio.h>

int str_char(const char s[], int c){
int i;

for ( i = 0; s != '\0'; i++ ){
if ( s == c ){
break;
}
}
if ( s == '\0' ){
i = -1;
}

return i;
}

int main (void){
int x, c;
char s[128];

printf("文字列を入力してください:");
scanf("%s", s);

printf("探す一文字を入力してください:");
scanf("%c", &c);

x = str_char(s, c);

if ( x == -1 ){
printf("文字 %c は見つかりませんでした。\n", c);
}
else{
printf("文字 %c を %d 番目で発見しました。\n", c, x+1);
}

return 0;
}

box
記事: 2002
登録日時: 13年前

Re: 文字列から文字を探すプログラム

#2

投稿記事 by box » 2年前

ここを

コード:

scanf("%c", &c);
scanf(" %c", &c);
こうしてみるとか...。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 文字列から文字を探すプログラム

#3

投稿記事 by みけCAT » 2年前

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。

コード:

int x, c;
scanf("%c", &c);
これは未定義動作になります。
%c は char 型の変数へのポインタを要求するので、変数 c の型は char にするべきです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

しんうん

Re: 文字列から文字を探すプログラム

#4

投稿記事 by しんうん » 2年前

お二人のおっしゃる部分をかえてみたらうまくいきました!
ありがとうございますm(_ _)m これで解決とさせていただきます。

返信

“C言語何でも質問掲示板” へ戻る