2016-10-16 2 views
0

C言語の新機能は、ここでは単純なStructを作成したものです。CのStructプロパティに値を代入する方法

typedef struct car { 
    float x, y;    
    unsigned char width, height;  
} Cars; 

車のxとyプロパティに割り当てるために私の試み:

Cars sedan; 
sedan.x = 20; 
sedan.y = 10; 

エラー

error: expected '=', ',', ';', 'asm' or 'attribute' before '.' token

任意のアイデア?助けてください!

+0

あなたがその変更を行った後に再コンパイルしましたか?それはたぶんあなたの問題の原因でした。 – dbush

+0

まだ同じエラーが発生していません。 – Shazza

+1

次に、エラーは他の場所にあります。現在のエラーは表示されません。あなたの質問を[最小、完全で、証明可能な例](http://stackoverflow.com/help/mcve)で更新してください。 – dbush

答えて

2

私はあなたが機能外線

Cars sedan; 
sedan.x = 20; 
sedan.y = 10; 

を持っていることを推測しています。機能の外には使用できません。

sedan.x = 20; 
sedan.y = 10; 

それらの行を関数内に移動します。

もう一つの選択肢は、たぶん、あなたは1行で構造体の一方のメンバーを定義してみてください(感謝@JonathanLeffler)

Car sedan = { .x = 20, .y = 10 }; 
+0

しかし、このコードはすべてすべての機能の外で定義されています。グローバルに – Shazza

+0

@シャツァ、それは問題です。 'Car sedan;'はすべての関数の外で使うことができますが、関数の外では値を設定することはできません。それらは関数内に設定する必要があります。 –

+0

また、初期化する必要があります: 'Car sedan = {.x = 20、.y = 10};'。 –

0

を使用してstructのメンバーを初期化することです。

typedef struct car { 
    float x; 
    float y; 
    unsigned char width; 
    unsigned char height;  
} Cars; 
0
#include <stdio.h> 
#include <string.h> 

typedef struct car { 
    float x, y; 
    unsigned char width, height; 
} Cars; 

int main() { 
    Cars sedan; 
    sedan.x = 20; 
    sedan.y = 10; 

    printf("value one : %f\n", sedan.x); 
    printf("value two : %f\n", sedan.y); 
} 

出力:

value one : 20.000000 
value two : 10.000000 

あなたはまた、次のようにコードの構造、:)

struct car { 
    float x, y; 
    unsigned char width, height; 
}; 

int main() { 

    struct car sedan; /* Declare sedan of type car */ 

    sedan.x = 20; 
    sedan.y = 10; 

    printf("value one : %f\n", sedan.x); 
    printf("value two : %f\n", sedan.y); 
} 
+0

上記のやり方をコピーしてmain()に初期化と代入を移動し、このerorsを取得しました:error:構造体または共用体ではないメンバー 'x'の要求 snake.c:283:error: 'y'は構造体や共用体ではない – Shazza

+0

あなたのコンパイラは何ですか?あなたのCプログラムをコンパイルするのに使用されました – SMW

+0

私は以前の答えと私の答えを混乱させると思います。私のコード全体を再編集またはコピーしてから試してみてください:) Good Luck :) – SMW

関連する問題