ISBNチェッカー
猫でもできるプログラミング(http://www.kumei.ne.jp/c_lang/index.html)のc言語第一部を最初からやっているのですが、ISBNチェッカーを作成するページで躓いてしまいました。
第10章(http://www.kumei.ne.jp/c_lang/intro/no_10.htm)の一番下に書いてあるように、続けて他の番号を入力できるように作り変えたいのですが、cygwinでコンパイルして実行すると「次のチェックを行いますか」と表示された後にエラーが出てしまいます。自分でも確認してみたのですがどうしてか分からなかったので、こちらで質問させていただきました。
どの個所がまずいのでしょうか?助言をお願いします。
#include <stdio.h>
#include <string.h>
int input_isbn(void);
int check_isbn(char *);
int main()
{
char ch;
do {
input_isbn();
printf("次のチェックを行いますか? y/n\n");
scanf("%c",ch);
}while(ch=='y');
printf("終わりだよ!");
return 0;
}
int input_isbn(void)
{
char isbn[64];
int ret;
printf("ISBNを入力してください。\n");
scanf("%s", isbn);//文字列は、%sで
ret = check_isbn(isbn);
switch (ret) {
case -2:printf("入力ミスです\n");
break;
case -1:printf("不正番号です\n");
break;
case 0:printf("正しい番号です\n");
break;
}
return 0;
}
int check_isbn(char *bango)
{
int gokei, suuchi[10], i;
if(strlen(bango) != 10)
return -2;
gokei = 0;
for (i = 0; i <= 8; i++) {
suuchi[i] = bango[i] -48;
}
for(i = 0; i <= 8; i++)
gokei = gokei + suuchi[i]*(10-i);
if(bango[9] == 'X'||bango[9] =='x')
gokei = gokei + 10;
else gokei = gokei + bango[9] - 48;
printf("gokei = %d\n", gokei);
if (gokei%11==0)
return 0;
else return -1;
}
お礼
実は私は出版に携わっておりまして、ISBN番号の13桁移行の準備作業をしていたら妙なことに気づいたのです。予備としての空番なんですか。どうもありがとうございました。