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

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

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

#1

投稿記事 by dasw » 6年前

文字を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;

}

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 6年前

dasw さんが書きました:下記のコードで実行しましたところ、6文字目でループを抜けて
しまいます。
こちらでためしたところ、6文字目ではなく11文字目でループを抜けました。
0から10まで数えているので、11文字になります。
改行文字を数え忘れているために6文字目だと誤解しているのではないでしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

h1j1k1
記事: 37
登録日時: 6年前

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

#3

投稿記事 by h1j1k1 » 6年前

非表示エリア
この非表示エリアを表示するには、登録し、ログインする必要があります。

das
記事: 1
登録日時: 6年前
住所: dsdf

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

#4

投稿記事 by das » 6年前

>h1j1k1 様
丁寧なご回答有難うございます。
>まず、Defineを使って1度しか使わないバッファーを指定しているのはなぜですか?
>次に、20行目でiCnt++としていないのはなぜですか?
>そして、16,17行目でprintf("Count %d\nBuffer Over\n", iCnt);
特に気にしておりませんでした。
ご指摘有難うございます。

>みけCAT

有難うございました。

返信

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