C言語を使用して構造に関するサンプルプログラムを作成する
構造は、さまざまなデータ型変数のコレクションであり、単一の名前の構文でグループ化されています。
構造体の宣言と初期化
構造体宣言の一般的な形式は次のとおりです-
datatype member1; struct tagname{ datatype member2; datatype member n; };
ここで、struct --keyword
tagname-構造の名前を指定します
member1、member2-構造を構成するデータ項目を指定します。
例
struct book{ int pages; char author [30]; float price; };
構造変数
構造体変数を宣言する方法は3つあります。それらは次のとおりです-
1) struct book{ int pages; char author[30]; float price; }b; 2) struct{ int pages; char author[30]; float price; }b; 3) struct book{ int pages; char author[30]; float price; }; struct book b;
構造の初期化とアクセス
-
メンバーと構造体変数の間のリンクは、メンバー演算子(または)ドット演算子を使用して確立されます。
-
初期化は次の方法で実行できます-
方法1
struct book{ int pages; char author[30]; float price; } b = {100, “balu", 325.75};
方法2
struct book{ int pages; char author[30]; float price; }; struct book b = {100, “balu", 325.75};
方法3(メンバー演算子を使用)
struct book{ int pages; char author[30]; float price; } ; struct book b; b. pages = 100; strcpy (b.author, “balu"); b.price = 325.75;
方法4( scanf を使用) 関数)
struct book{ int pages; char author[30]; float price; } ; struct book b; scanf (“%d", &b.pages); scanf (“%s", b.author); scanf (“%f", &b. price);
以下に示すように、mainメソッドで上記の構造のいずれかの内容を印刷できます-
main ( ){ struct book b; clrscr ( ); printf ( "enter no of pages, author, price of book"); scanf ("%d%s%f", &b.pages, b.author, &b.price); printf("Details of book are"); printf("pages =%d, author = %s, price = %f", b.pages, b.author, b.price); getch(); }
例
以下は構造の別の例です-
#include<stdio.h> struct aaa{ struct aaa *prev; int i; struct aaa *next; }; main(){ struct aaa abc,def,ghi,jkl; int x=100; abc.i=0; abc.prev=&jkl; abc.next=&def; def.i=1; def.prev=&abc; def.next=&ghi; ghi.i=2;ghi.prev=&def; ghi.next=&jkl; jkl.i=3; jkl.prev=&ghi; jkl.next=&abc; x=abc.next->next->prev->next->i; printf("%d",x); }
出力
2
-
構造概念を使用してC言語でビットフィールドを説明する
ビットフィールドは、変数のサイズをビット単位で指定するために使用されます。通常、構造内で定義されます。 ビットフィールド:1バイト=8ビット たとえば、 例を以下に説明します- Struct info{ int x:2; }; ここで、xは2ビットを占めています。 範囲外のビットフィールドに値を割り当てることは無効です。 サイズとアドレス演算子はビットフィールドに適用できないため、scanfステートメントを使用してビットフィールドの値を入力することはできません。 ビットフィールドに割り当てることができるデータ型は、int、signed int、uns
-
Cを使用したファイルへの構造の読み取り/書き込み
fwrite()およびfread()は、Cでファイルに書き込むために使用されます。 fwrite()構文 fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) ここで ptr-書き込まれる要素の配列へのポインタ size-書き込まれる各要素のバイト単位のサイズ nmemb-要素の数。各要素のサイズはバイトです ストリーム–出力ストリームを指定するFILEオブジェクトへのポインタ fread()構文 fread(void *ptr, size_t size, size_t nmemb, FILE *stre