ちょっとした技術を身に付けたので、自分で何か作れないかと試してみたんですが・・・。

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

ちょっとした技術を身に付けたので、自分で何か作れないかと試してみたんですが・・・。

#1

投稿記事 by リョキョタ » 16年前

たとえば、数字を入力して1を入力した場合1の文章。2を入力した場合2の文章・・・・というようなプログラムを作っている時に、ちょっとわからないところがあったのでお聞きしたいんですが。
全体の仕様としては、まず最初に数字を入力するところがあって、数字を入力したらその数字の文章を表示して、Enterキーを押すとまた入力する画面に戻る。
っていうように何回も戻って入力したりできるようなものをつくってるんですが。
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"


int main()
{
char episode[2];
while(1){
char confirmation = 'n';

while(confirmation != 'y'){/*入力確認*/
system("cls");
printf("エピソード:");
scanf("%s",episode);
printf("エピソード:%sでよろしいですね?(Y/N)\n",episode);
scanf("%*c%c",&confirmation);
}


system("cls");
getchar();

if(*episode == '1')printf("1番です。");
if(*episode == '2')printf("2番です。");
/*・・・・・・・・・*/
if(*episode == '12')pritnf("12番です");
printf("Enterキーを押してください。\n");
getchar();
}

getchar();
return 0;
}
この場合1と2を入力したときはそれぞれ「1番です。」「2番です。」と表示されるしEnterキーを押せばちゃんと入力画面に戻るんですが、数字が2桁になると、
episode[0]の部分というか、例えば、12とした場合、1の部分しか読み取られてないみたいで12と入力しても「1番です。」と表示されてしまいます。
そこで、ifの条件をif(*episode == '12') ⇒ if(episode[0]=='1' && episode[1]=='2')としたら今度は(12を入力したときに)「12番です」と表示されるのは良かったのですが、
「1番です。」というのも表示されてしまいました。
「12番です」だけが表示されるようにしたいんですがわかりません。
問題はifの条件で2桁以上を判定する場合がわからないんですがどうすればいいんでしょうか?


kazuoni

Re:ちょっとした技術を身に付けたので、自分で何か作れないかと試してみたんですが・・・。

#3

投稿記事 by kazuoni » 16年前

文字定数・文字列リテラルの違いをググってみてください。

non

Re:ちょっとした技術を身に付けたので、自分で何か作れないかと試してみたんですが・・・。

#4

投稿記事 by non » 16年前

char episode[2];
scanf("%s",episode);
文字列リテラルには、文字列の終わりにNULL文字('\0')が格納されます。
そのため。配列の1個を使いますから、このままでは、入力できるのは1文字です。
2文字入力すると、NUL文字を格納する部分がないので、最悪暴走します。
従って、最低でも入力する文字数+1文字分の配列を用意します。
ですから、最低でも、char episode[3];にします。

次に文字列リテラルで入力したら、それを数値に変換しましょう。
数値に変換すれば、1桁でも2桁でも、条件分岐が簡単にできますね。
今回は atoi という関数を使ってみたらどうでしょうか?
使い方は検索してください。

最後に、多重分岐ですからこのような場合は
switch文を使った方がcoolです。

リョキョタ

Re:ちょっとした技術を身に付けたので、自分で何か作れないかと試してみたんですが・・・。

#5

投稿記事 by リョキョタ » 16年前

まだちょっとchar型の文字列とか、文字列リテラル、についてちゃんと理解していなかったので調べてみます。
あと、NULL文字というものを忘れていましたありがとうございます。

通りすがり

Re:ちょっとした技術を身に付けたので、自分で何か作れないかと試してみたんですが・・・。

#6

投稿記事 by 通りすがり » 16年前

参考までにお聞きします。
「ちょっとした技術」の中身が知りたいです。

リョキョタ

Re:ちょっとした技術を身に付けたので、自分で何か作れないかと試してみたんですが・・・。

#7

投稿記事 by リョキョタ » 16年前

えっと、if文とかwhile文とかC言語のプログラムの書き方がすこしわかってきたので、
その知ってることだけで何かできるかなと思って作ってみたんですが。
一応初心者向けのCプログラミングの参考書の内容を 全体的 には勉強したつもりです。
初めてのCプログラミング(http://www.amazon.co.jp/dp/4798018422/r ... 953&sr=1-2)ってやつなんですけど。

閉鎖

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