合計 昨日 今日

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

[このトピックは解決済みです]

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: dasw
[URL]
Date: 2017年10月07日(土) 14:31
No: 1
(OFFLINE)

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

文字を1文字づつ入力し、文字数が10個目でループを抜ける
プログラムを作りたいのですが、
下記のコードで実行しましたところ、6文字目でループを抜けて
しまいます。
理由がわかりませんので、教えて下さい

コード[C]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#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;
 
}

Name: みけCAT
[URL]
伝説なるハッカー(677,649 ポイント)
Date: 2017年10月07日(土) 15:43
No: 2
(ONLINE)

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

dasw さんが書きました:下記のコードで実行しましたところ、6文字目でループを抜けて
しまいます。

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

Name: h1j1k1
[URL]
ぴよぴよ(166 ポイント)
Date: 2017年10月07日(土) 16:03
No: 3
(OFFLINE)

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

この領域はあなたがユーザーとしてログインすれば表示されます。

Name: das
[URL]
ぴよぴよ(58 ポイント)
Date: 2017年10月07日(土) 22:56
No: 4
(OFFLINE)

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

[解決!]

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

>みけCAT

有難うございました。


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[10人]