---------------------
<問>
次に示す文字列 "+-/*=)(@" を strchr関数を利用して指定された文字を検索し、
指定された文字が文字列の何番目の文字であるかを画面に表示する実行可能なプログラムを作成せよ。プログラムにおける番号の付与は0オリジンとする。
指定文字1番目 '+'
指定文字2番目 '-'
指定文字3番目 '/'
指定文字4番目 '*'
指定文字5番目 '('
指定文字6番目 ')'
指定文字7番目 '='
---------------------
ここまで。
strchr関数の使い方を理解し、プログラムをつくったところ
不明点が2つ出てきました。
1、+が0番目、-が1番目など、0オリジンと1つずつズレが生じてしまう。
C言語は0からはじまるため、問題文通りにするとこうなってしまいます。
"+-/*=)(@"の最初を" +-/*=)(@"などと半角スペースをあけると解決するのですが
これってアリなのでしょうか?
2、文字列"+-/*=)(@"と指定文字5番目~7番目までの順番がちがう
問題文の文字列"="")""("が指定文字列と対応していません。
これは、「その文字の順番をif文とかfor文などを用い変えなさい」という
趣旨なのでしょうか?
以上、よろしくお願いいたします。
#include <stdio.h>
#include <string.h> /* strchr()に必要 */
int main(int argc,char *argv[])
{
char str[] = "+-/*=)(@",*p;
int c;
printf("検索文字を入力してください。\n");
c = getchar();
p = strchr(str, c);
if(p != NULL){
printf("%cは文字列の%d番目にあります。\n", c, p - str);
printf("以降の文字列は%sです。\n",p);
}
else
printf("%cは見つかりませんでした。\n,c");
return 0;
}