値が代入されてくれません

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

値が代入されてくれません

#1

投稿記事 by ちけ » 16年前

こんにちは、質問をさせてください。

構造体で作った変数の中に値を代入したいのですが、値が全く入ってくれません。
以下にその部分のソースを書きます。


#include "DxLib.h"
#include <math.h>

#define KBMAX 20
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){

        ChangeWindowMode( TRUE ) ; 
		

        if( DxLib_Init() == -1 ) return -1;

typedef struct{
        int flag;
        double kabux,kabuy,Angle,mem_kx,mem_ky;
              } kbface;

typedef struct{
        int flag,counter,img;
        kbface kbgao[KBMAX];
        } kbfaces;
        kbfaces kbgaos;


      for(int i=0;i<KBMAX;i++){
                kbgaos.kbgao.flag=0;
                kbgaos.kbgao.kabux=0;
                kbgaos.kbgao.kabuy=0;
                              }

    SetDrawScreen( DX_SCREEN_BACK ) ; 
    int White   = GetColor( 255 , 255 ,255 ) ; 

  int bbb;
        for(bbb=0;bbb<25;bbb++){
					
		for(int j=0;j<KBMAX;j++){
			
			if(kbgaos.kbgao[j].flag==0){
				kbgaos.kbgao[j].flag=1;
				kbgaos.kbgao[j].kabux=104;
				kbgaos.kbgao[j].kabuy=250;

                ClearDrawScreen();    
			
				for(int f=0;f<KBMAX;f++){
                           DrawFormatString(500,20*f, White , " %d" ,kbgaos.kbgao[f].flag);
                           DrawFormatString(300,20*f, White , " %d" ,kbgaos.kbgao[f].kabux);
                           DrawFormatString(400,20*f, White , " %d" ,kbgaos.kbgao[f].kabuy);
				                        }
			  WaitKey() ; 
			  ScreenFlip() ;
			break;


			                           }


                                 }
                                 }


WaitKey() ;             
DxLib_End() ;          
return 0 ;             
}



flagの方には値が入っているのに、
kbgaos.kbgao[j].kabuxの方には代入されてくれません。
最終的にこの中にランダムな値を入れたいのですが、それも入ってくれないために
試しに定数を代入させてみたのですがそれでも入ってくれません。
doubleで決めた値なので整数じゃだめなのかと思い、小数を入れてみましたが
今度は変な値がでてきてしまいます。
(double)をつけても駄目でした。
なぜkbgaos.kbgao[j].kabuxには値が入らないのでしょうか。
僕にはどこか根本的な知識が抜けているのでしょうか。
そして、どうすれば値が入るのでしょうか。
教えてください。

WindowsXpでVC++ 2008EEを使ってコンパイルしています。

C言語に関しては、初心者です。

こめかみ

Re:値が代入されてくれません

#2

投稿記事 by こめかみ » 16年前

>DrawFormatString(300,20*f, White , " %d" ,kbgaos.kbgao[f].kabux);
>DrawFormatString(400,20*f, White , " %d" ,kbgaos.kbgao[f].kabuy);

ここの%dを%fに変えて実行してみてください。

小数点の表示などの細かい調整がしたかったら、
変換指定子とかでググるといいかもです。

教科書とか持ってるなら載ってるかもしれないです。

ちけ

Re:値が代入されてくれません

#3

投稿記事 by ちけ » 16年前

%fをつけることによって代入される予定の値を出すことができました。
昔のBASICしか弄ったことがなかったせいか、この辺の違いがよくわかってませんでした。
もう少し勉強してから出直します。
どうもありがとうございます。

閉鎖

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