Cのファイルで使用される関数fread()およびfwrite()を説明する
問題
5人の生徒の詳細をファイルに保存するためのCプログラムを作成し、fread()とfwrite()を使用して同じものを印刷します
解決策
fread()関数 レコード全体を一度に読み取ります。
構文
fread( & structure variable, size of (structure variable), no of records, file pointer);
例
struct emp{
int eno;
char ename [30];
float sal;
} e;
FILE *fp;
fread (&e, sizeof (e), 1, fp); fwrite()関数 一度にレコード全体を書き込みます。
構文
fwrite( & structure variable , size of structure variable, no of records, file pointer);
例
struct emp{
int eno:
char ename [30];
float sal;
} e;
FILE *fp;
fwrite (&e, sizeof(e), 1, fp); プログラム
#include<stdio.h>
struct student{
int sno;
char sname [30];
float marks;
char temp;
};
main ( ){
struct student s[60];
int i;
FILE *fp;
fp = fopen ("student1.txt", "w");
for (i=0; i<2; i++){
printf ("enter details of student %d\n", i+1);
printf("student number:");
scanf("%d",&s[i].sno);
scanf("%c",&s[i].temp);
printf("student name:");
gets(s[i].sname);
printf("student marks:");
scanf("%f",&s[i].marks);
fwrite(&s[i], sizeof(s[i]),1,fp);
}
fclose (fp);
fp = fopen ("student1.txt", "r");
for (i=0; i<2; i++){
printf ("details of student %d are\n", i+1);
fread (&s[i], sizeof (s[i]) ,1,fp);
printf("student number = %d\n", s[i]. sno);
printf("student name = %s\n", s[i]. sname);
printf("marks = %f\n", s[i]. marks);
}
fclose(fp);
getch( );
} 出力
enter details of student 1 student number:1 student name:pinky student marks:56 enter details of student 2 student number:2 student name:rosy student marks:87 details of student 1 are student number = 1 student name = pinky marks = 56.000000 details of student 2 are student number = 2 student name = rosy marks = 87.000000
-
Cプログラミングにおけるポインターの配列とポインターからポインターへの概念を説明する
ポインタの配列 他のデータ型と同様に、ポインタ配列を宣言することもできます。 宣言 datatype *pointername [size]; たとえば、int * p [5]; //5つの整数要素アドレスを保持できるポインタの配列を表します 初期化 「&」は初期化に使用されます たとえば、 int a[3] = {10,20,30}; int *p[3], i; for (i=0; i<3; i++) (or) for (i=0; i<3,i++) p[i] = &a[i]; p[i] = a+i; アクセス アクセスには間接演算子(*)を使用します。
-
C言語でのポインタと配列の概念を説明する
ポインタと配列 連続メモリ位置は、コンパイラによって配列のすべての要素に割り当てられます。 ベースアドレスは、配列の最初の要素の場所です。 たとえば、 int a [5] ={10、20,30,40,50}; 5つの要素は次のように格納されます- 「p」が整数ポインタとして宣言されている場合、配列「a」は次の代入で指すことができます- p=a or p=&a[0]; 「a」の各値には、p++を使用して1つの要素から別の要素に移動することでアクセスします。ポインターがインクリメントされると、その値は、ポインターが指すデータ型のサイズだけ増加します。この長さは「スケー