- 締切済み
入力関数(配列4個)を作成するプログラムです。
入力関数(配列4個)を作成するプログラムです。 内に入れる数字は、0~9です。どうしてもイメージがわからず 困っています。どなたかご教示頂けましたら大変助かります。 どうか宜しくお願い致します。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- PED02744
- ベストアンサー率40% (157/390)
Hit & Blow を作るのでしょうか。 1桁の数字を1つの配列に入れて、4桁の数字の番号と位置があっているかどうかを 示すプログラムでしょうか。 これじゃ、答えかなあ~ と思ったけれども、 [C hit & blow ソース]で検索した結果がこれ ↓
- jacta
- ベストアンサー率26% (845/3158)
4桁の数字を配列に格納するということであれば、 int input_4digits(wchar_t array[4]) { char *locale = setlocale(LC_CTYPE, ""); wchar_t t[4+1+1]; /* 4桁+'\n'+'\0' */ const wchar_t digits[] = L"0123456789"; int i, result = -1; if (fgetws(t, sizeof(t)/sizeof(t[0]), stdin) == NULL || wcslen(t) != 5 || t[4] != L'\n') goto fail; for (i = 0; i < 4; i++) if (wcschr(digits, t[i]) == NULL) goto fail; wmemcpy(array, t, 4); result = 0; fail: setlocale(LC_CTYPE, locale); return result; } こんな感じでどうでしょう。 成功なら0を、失敗なら-1を返します。
- ddnp009
- ベストアンサー率25% (15/58)
配列を"作成する"んじゃなくて、 配列に"中身を詰めたい"ってことかしら。 int nums[4] = {0}; fscanf(stdin, "%1d%1d%1d%1d", nums, nums + 1, nums + 2, nums + 3); // "1234"などと続けて4桁入力させる前提 printf("%d, %d, %d, %d", *nums, nums[1], nums[2], nums[3]);
- wave_sc
- ベストアンサー率33% (1/3)
>決まっている4桁の数字と入力した数字が当たっているかの数当てゲームに使用したいと思っております。 でしたらscanf関数で数値を文字列として受け取ったあと、atoi関数なんかで数値に変換しちゃえばよいのでは?
- jacta
- ベストアンサー率26% (845/3158)
> 入力関数(配列4個)を作成するプログラムです。 配列4個というのがよく分かりません。 > 内に入れる数字は、0~9です。 数字を中に入れるとのことなので、何らかの形で文字を格納できる配列ということでしょうか? しかし、全角の0~9を入れるということですので、wchar_t型の配列か、多バイト文字を格納するための二次元配列ということでよろしいでしょうか? そもそも、4個もの配列を何に使うのでしょうか?さっぱり分かりません。
お礼
返信ありがとうございます。説明不足ですみません。 scnaf関数を使わず4桁の数字を入力する関数を作り、制御文?? 決まっている4桁の数字と入力した数字が当たっているかの数当てゲームに使用したいと思っております。 宜しくお願い致します。