2016-11-12 8 views
0

私が作ったこの例がありますが、うまくいきません。 このコードはXXを追加することになっている:YY:3列を有する配列にZZ:文字'0'整数値0を有していないことリアルタイム= {XX、YY、ZZ}getch()を使用して配列内に2桁の数字を1つのエントリとして追加するにはどうすればよいですか?

#include <stdio.h> 
#include <conio.h> 
int main() { 
    int realtime[3]; 
    char time[8]; 
    for(int i = 0;i<8;i++){ 
     time[i] = getche(); 
    } 
    for(int i = 0, j = 0;i<3;i++, j+=3){ 
     realtime[i] = (time[j])*10+time[j+1]; 
    } 
} 
+1

は、あなたが期待するもの振る舞い、あなたが取得しているものを提供する必要があります。ちょうど "それは働かない"と言っても助けにならない。 – Tibrogargan

+0

'i ++、j + = 3' - これは本当に壊れているようです。 – artm

+0

' time'はよく知られている関数です。コードは、よく知られている関数をいくつかの配列として再定義するべきではありません。 – user3629249

答えて

2

お知らせ。あなたがテキスト文字列「1時23分45秒」を読めば、インスタンスを参照してくださいhttps://en.wikipedia.org/wiki/ASCII

文字'0'の整数値は、だから、通常は48である、あなたは整数値48、time[1]持つを持つtime[0]になってしまいます整数値49、整数値50を有するtime[3]などである。

したがって、2番目のループでtimeの値に48を引く必要があります。これは通常time[j]-'0'によって行われます。

これを試してみてください:

for(int i = 0, j = 0;i<3;i++, j+=3){ 
    realtime[i] = ((time[j]-'0')*10+(time[j+1]-'0'); 
        //  ^^^^    ^^^^^ 
} 
+1

または単に 'time [i] = getch() - '0';'を実行してください。 –

関連する問題