JavaScriptでは、私は通常そうします..
var myObject = { "Name" : "Liam", "Address" : "UK"};
Cで似たようなものを作るにはどうすればよいですか?
できれば構造の何か
myObject { CHAR : INT}
JavaScriptでは、私は通常そうします..
var myObject = { "Name" : "Liam", "Address" : "UK"};
Cで似たようなものを作るにはどうすればよいですか?
できれば構造の何か
myObject { CHAR : INT}
必要なのは連想配列です。たとえば、lighttpdプロジェクト array.carray.hからのものを使用できます 。
必要なのはdata_integer構造です。このような補助配列は、JavaScriptオブジェクトのようなもので、「キー」はフィールド名であり、値はフィールドのデータです。
JSオブジェクトは基本的に、フィールド名とその値の間の栄光の辞書(マップ)であり、構文上の糖衣構文が含まれているため、必要なのはそれだけです。
C は、特に文字列とメモリ管理に関して、JavaScript とは大きく異なります。やりたいことによっては、同等の C 言語は非常に扱いにくくなる可能性があります。
文字列メンバーの最大長がわかっている場合は、次のことができます
struct obj {
char name[LENGTH];
int num;
};
struct obj myObj;
...
strcpy(obj.name, "Some Name");
obj.num = 1;
C には文字列データ型がありません。文字列は、0 で終わる値のシーケンスとして表され、の配列char
として格納されますchar
。代入演算子=
は配列型に対して定義されていないためstrcpy
、上記のように文字列値を代入するようなライブラリ関数を使用する必要があります。
文字列メンバーの最大長がわからない場合は、次のようにします。
struct obj {
char *name;
int num;
};
struct obj myObj;
myObj.name = malloc(length_of_string);
if (myObj.name)
{
strcpy(myObj.name, "Some Name");
}
myObj.num = 1;
...
free(myObj.name);
この場合myObj.name
、ライブラリ呼び出しを使用して手動でメモリを割り当てる必要があり、malloc
ライブラリ呼び出しを使用してメモリの割り当てを解除する必要がありますfree
。
そのタイプのシーケンスを保存したい場合は、次のようにします
struct obj myObjArray[NUMBER_OF_OBJECTS];
そしてあなたの割り当てを次のように行います
myObjArray[i].num = 1;
strcpy(myObjArray[i].name, "Some Name");
struct myObj
{
char* string;
int num;
};
それが最も基本的なことです。これを使いたければ c を学ぶべきです。