質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Q&A

解決済

3回答

173閲覧

c言語 if文について

triagain23

総合スコア9

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

0グッド

0クリップ

投稿2018/06/21 08:13

c言語について
大学で組み込みシステムの課題について

①条件文 ifで
キーボードからの入力が(自然数*)で処理文に進みたい時の条件式はどう書けばよろしいでしょうか?

k:キーボード入力

k=key_get();
if(条件文) {
処理文
}
上記の条件文 のキーボード入力が
1*や90* 、1000*などの(自然数*)の形で入力した時に処理文に進む書き方をお願いします
単に数字ならif(k==‘90’)や
記号(*)ならif(k==‘*’) でできると習いましたが二つが合わせた時の条件の書き方が分かりません。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2018/06/21 08:15

key_get()はどのような値を返すのでしょうか。C言語の標準関数ではないので、その情報がないと判断ができません。
guest

回答3

0

ベストアンサー

少し愚直かもしれませんが以下の方法でやってみました。
今回は入力した文字が100*かどうかチェックします。

1.fgetsで入力を受け付ける.
2.入力した文字の文字数と100の文字数か同じかチェックする
3.2で同じだった時、for文を用いて比較する文字と1文字ずつ比較する。
4.一文字でも異なればすぐにbreak文でループを終了する。(check = 0にする)
5.最後までcheck = 1だったら入力した文字が100
ということになる。

C

1#include <stdio.h> 2#include <string.h> 3 4#define BUFSIZE 256 5 6int main(void) 7{ 8 char *text = "100*"; 9 char buf[BUFSIZE]; 10 int i; 11 int judge = 0; 12 13 fgets(buf,sizeof(buf),stdin); 14 buf[strlen(buf) - 1] = '\0'; //最後の改行を削除 15 if(strlen(text) != strlen(buf)){ 16 judge = 0; 17 } 18 else{ 19 for(i = 0; i < strlen(text); i++){ 20 if(*(buf + i) != *(text + i)){ 21 judge = 0; 22 break; 23 } 24 else{ 25 judge = 1; 26 } 27 } 28 } 29 if(judge == 1){ 30 printf("入力した文字は%sです。",text); 31 } 32 else{ 33 printf("入力した文字は%sではありません。",text); 34 } 35 return 0; 36}

<追記>
strcmpを使えばすぐにできました。
詳しくは文字列を比較をご覧ください。

C

1#include <stdio.h> 2#include <string.h> 3 4#define BUFSIZE 256 5 6int main(void) 7{ 8 char *text = "100*"; 9 char buf[BUFSIZE]; 10 11 fgets(buf,sizeof(buf),stdin); 12 buf[strlen(buf) - 1] = '\0'; //最後の改行を削除 13 14 if(strcmp(buf,text) == 0){ 15 printf("入力した文字は%sです。",text); 16 } 17 else{ 18 printf("入力した文字は%sではありません。",text); 19 } 20 return 0; 21}

投稿2018/06/21 09:32

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

以下の3つの処理が必要だと思います。

・入力を最後の一文字とそれ以前に分割する
・最後の1文字が*かどうかチェックする
・その他の文字列が数字かどうかチェックする

投稿2018/06/21 08:59

tamina

総合スコア136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

・fgets でキーボードから1行分の文字列を入力
・strtol関数でlongに変換、変換後の文字列の位置の文字を取り出す
・その文字が非文字(\n とか\rとか\0とか)であれば自然数、そうでなければ非自然数

というのでどうでしょう

投稿2018/06/21 08:22

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問