ページ 11

ループ抜けの処理について

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

有難うございました。