ページ 1 / 1
ループ抜けの処理について
Posted: 2017年10月07日(土) 14:31
by dasw
文字を1文字づつ入力し、文字数が10個目でループを抜ける
プログラムを作りたいのですが、
下記のコードで実行しましたところ、6文字目でループを抜けて
しまいます。
理由がわかりませんので、教えて下さい
コード:
#include "stdio.h"
#define BUF 20
int main(void){
char cBuf[BUF];
int iCnt=0;
while(1){
scanf("%c",&cBuf[iCnt]);
printf("%c\n",cBuf[iCnt]);
if(iCnt==10) {
printf("Count %d\n",iCnt);
printf("Buffer Over\n");
break;
}
iCnt=iCnt+1;
}
return 0;
}
Re: ループ抜けの処理について
Posted: 2017年10月07日(土) 15:43
by みけCAT
dasw さんが書きました:下記のコードで実行しましたところ、6文字目でループを抜けて
しまいます。
こちらでためしたところ、6文字目ではなく11文字目でループを抜けました。
0から10まで数えているので、11文字になります。
改行文字を数え忘れているために6文字目だと誤解しているのではないでしょうか?
Re: ループ抜けの処理について
Posted: 2017年10月07日(土) 16:03
by h1j1k1
非表示エリア
この非表示エリアを表示するには、登録し、ログインする必要があります。
Re: ループ抜けの処理について
Posted: 2017年10月07日(土) 22:56
by das
>h1j1k1 様
丁寧なご回答有難うございます。
>まず、Defineを使って1度しか使わないバッファーを指定しているのはなぜですか?
>次に、20行目でiCnt++としていないのはなぜですか?
>そして、16,17行目でprintf("Count %d\nBuffer Over\n", iCnt);
特に気にしておりませんでした。
ご指摘有難うございます。
>みけCAT
有難うございました。