- 締切済み
文字列の構造体キャスト
文字列を構造体にキャストした際に、メンバ変数は以下のようには、 取得できないのでしょうか? typedef struct { int year; /* 学年 */ int clas; /* クラス */ int number; /* 出席番号 */ char name[64]; /* 名前 */ } student; int main(void) { student *data=NULL; char c[] = "123456789012abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij1234"; char* tmp; tmp = &c[0]; student_print(data, tmp); return 0; } void student_print(student *data, char *mkg) { void* buff = NULL; buff = (student*)mkg; printf("[year]:%s\n", buff ->year);←ここ return; }
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- yaemon_2006
- ベストアンサー率22% (50/220)
>No.6 >連続したメモリ領域を構造体オブジェクトとして使いたいのなら、こういうこともできます。 >... offsetofを使ったほうがいいのでは?
- akayoroshi
- ベストアンサー率50% (46/91)
連続したメモリ領域を構造体オブジェクトとして使いたいのなら、こういうこともできます。 #include <stdio.h> #include <string.h> typedef struct{ int year;/*学年*/ int clas;/*クラス*/ int number;/*出席番号*/ char name[64];/*名前*/ }student; void student_print(void *mkg); int main(void) { char c[sizeof(student)]=""; int *ye=(int*)c; int *cl=(int*)c+1; int *nu=(int*)c+2; *ye=1234; *cl=5678; *nu=9012; strncpy (c+3*sizeof(int),"abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij1234",63); student_print(c); return 0; } void student_print(void *mkg) { student *buff=(student*)mkg; printf("[year]:%d\n",buff->year); printf("[clas]:%d\n",buff->clas); printf("[numb]:%d\n",buff->number); printf("[year]:%s\n",buff->name); return; }
- Ogre7077
- ベストアンサー率65% (170/258)
キャストはできませんが、変換ならお望みの結果になると思います。 typedef struct { int year;/* 学年 */ int clas;/* クラス */ int number;/* 出席番号 */ char name[64];/* 名前 */ } student; ... const char* s = "3 2 1 浅井雪乃"; student data; int r; r = sscanf(s, "%d %d %d %s", &data.year, &data.clas, &data.number, data.name); ← ここ if (r == 4) { printf("[year]:%d\n", data.year); }
- MillenniuM
- ベストアンサー率58% (42/72)
見た目、正しくすると、 http://pastebin.com/7qZJLmJR という感じでしょうか。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
残念ながらキャストには "数字"を"数値" に変換する機能は持ち合わせておりません。
- wormhole
- ベストアンサー率28% (1626/5665)
>buff = (student*)mkg; こんなことやったって buff の型が変わるわけじゃありません。 また、(student*) は構造体へのキャストではありません。
- Tacosan
- ベストアンサー率23% (3656/15482)
どこか「構造体にキャスト」してるところがあるんですか?