當前位置:首頁 » 編程語言 » c語言結構體數組

c語言結構體數組

發布時間: 2022-01-20 04:22:09

c語言中怎麼把一個結構體數組寫入文件

C語言把一個結構體數組寫入文件分三步:

1、以二進制寫方式(wb)打開文件

2、調用寫入函數fwrite()將結構體數據寫入文件

3、關閉文件指針

相應的,讀文件也要與之匹配:

1、以二進制讀方式(rb)打開文件

2、調用讀文件函數fread()讀取文件中的數據到結構體變數

3、關閉文件指針

參考代碼如下:

#include<stdio.h>
structstu{
charname[30];
intage;
doublescore;
};
intread_file();
intwrite_file();
intmain()
{
if(write_file()<0)//將結構體數據寫入文件
return-1;
read_file();//讀文件,並顯示數據
return0;
}

intwrite_file()
{
FILE*fp=NULL;
structstustudent={"zhangsan",18,99.5};
fp=fopen("stu.dat","wb");//b表示以二進制方式打開文件
if(fp==NULL)//打開文件失敗,返回錯誤信息
{
printf("openfileforwriteerror ");
return-1;
}
fwrite(&student,sizeof(structstu),1,fp);//向文件中寫入數據
fclose(fp);//關閉文件
return0;
}

intread_file()
{
FILE*fp=NULL;
structstustudent;
fp=fopen("stu.dat","rb");//b表示以二進制方式打開文件
if(fp==NULL)//打開文件失敗,返回錯誤信息
{
printf("openfileforreaderror ");
return-1;
}
fread(&student,sizeof(structstu),1,fp);//讀文件中數據到結構體
printf("name="%s"age=%dscore=%.2lf ",student.name,student.age,student.score);//顯示結構體中的數據
fclose(fp);//關閉文件
return0;
}

fwrite(const void*buffer,size_t size,size_t count,FILE*stream);

(1)buffer:指向結構體的指針(數據首地址)
(2)size:一個數據項的大小(一般為結構體大小)
(3)count: 要寫入的數據項的個數,即size的個數
(4)stream:文件指針。

⑵ C語言結構體數組問題

不知道你是否測試過,是否總使用的內存超過64KB就不靈了?如果是那樣,應答將編譯模式調節成large far模式再試

⑶ C語言結構體數組的使用

(1)初始化語句中的每個初始化值用單引號引起來,即改為iA[N]={{『1』,『2』},{『1』,『1』},{『1』,『3』}},B[N]={{『1』,『1』},{『1』,『3』},{『1』,『5『}};
(2)輸出語句printf("%s.%s ",(A[m].a),(A[m].b));中的%s改成%c

⑷ c語言結構體成員為結構體數組問題

這是因為內存溢出。
系統在分配內存的時候不是按照變數定義的先後順序分配的,並且分配的位置是隨機的。
所以會出現你所說的情況,在使用的時候要小心。

希望可以幫助到你。

⑸ C語言 結構體數組的個數如何自己定義

C99標准出來以前,C語言不支持動態定義數組大小,只能採用動態分配指針方式來完成動態數組的個數定義。如:

structst{
intx,y;
charstr[10];
};
structst*array;
intn;
printf("inputn:");scanf("%d",&n);
array=(structst*)malloc(n*sizeof(structst));//動態分配n個結構體空間,接下來array的操作,與數組操作是相同的,如:array[0].x=1;

C99以後,C語言標准開始支持動態定義數組,但動態數組,在其確定個數之後,在其生命期中,就不可變了。如:

structst{
intx,y;
charstr[10];
};
intn;
printf("inputn:");scanf("%d",&n);
structstarray[n];//定義動態數組
array[0].x=1;

⑹ C語言 結構體數組 計算個數

給數組初始化,判斷值是否被改變-----------------這題沒意義的

⑺ C語言結構體數組

#include<stdio.h>
struct student
{
int num;
char name[20];
float score1,score2,sum,average;
};
void main()
{
struct student stu[5];
int i;

for(i=0;i<5;i++)
{
printf("請依次輸入第%d個學生的學號,姓名,和兩門成績:",i+1);
scanf("%d%s%f%f",&stu[i].num,stu[i].name,&stu[i].score1,&stu[i].score2);
stu[i].sum=stu[i].score1+stu[i].score2;
stu[i].average=stu[i].sum/2;
}
printf("學號 姓名 成績 總成績 平均成績\n");
for(i=0;i<5;i++)
printf("%d %s %.2f %.2f %.2f
%.2f\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].sum,stu[i].average);
}

⑻ C語言編程。定義一結構體數組

#include <stdio.h>
#include <string>

#define MAX 3

struct Student
{
int number;
char name[20];
char jg[20];
float score;
}student[MAX+1];//student[0]留作暫存器

int main()
{
int i;
int j;
int k;
int temp;
for (i = 1; i < MAX+1; ++i)
{
printf("input the information of a student:\n");
scanf("%d %s %s %f", &student[i].number,student[i].name,student[i].jg,&student[i].score);
}

for (i = 1; i < MAX; ++i)//排序
{
k = i;
for (j = i+1; j < MAX+1; j++)
{
if (student[j].score > student[k].score)
{
k = j;
}

}

if (k != i)
{
student[0].number = student[k].number;
strcpy(student[0].name,student[k].name);
strcpy(student[0].jg,student[k].jg);
student[0].score = student[k].score;

student[k].number = student[i].number;
strcpy(student[k].name,student[i].name);
strcpy(student[k].jg,student[i].jg);
student[k].score = student[i].score;

student[i].number = student[0].number;
strcpy(student[i].name,student[0].name);
strcpy(student[i].jg,student[0].jg);
student[i].score = student[0].score;
}

}

for (i = 1; i < MAX+1; ++i)
{
printf("%d,%s,%s,%f\n", student[i].number,student[i].name,student[i].jg,student[i].score);

}
return 0;
}

⑼ C語言,結構體數組的長度

C語言不支持動態分配內存,你需要自己分配,大概這樣
#include<stdio.h>
#include<stdlib.h>
typdef struct Node
{
int value;
int next;
}Node;

int main()
{
int a;
scanf("%d",&a);
Node *p=malloc(a*sizeof(Node));
.......
}
這樣p就相當於Node數組的第一個元素的指針,也可以當作數組名使用了。

熱點內容
伺服器的空島如何刷錢 發布:2024-11-15 09:40:52 瀏覽:262
安卓系統錄像設置在哪裡 發布:2024-11-15 09:36:33 瀏覽:917
電信級伺服器電腦 發布:2024-11-15 09:26:27 瀏覽:246
壓縮某個文件夾 發布:2024-11-15 09:03:11 瀏覽:891
網址能解壓嗎 發布:2024-11-15 08:54:09 瀏覽:933
python更改目錄 發布:2024-11-15 08:41:08 瀏覽:265
伺服器快閃記憶體可以裝在一般電腦上嗎 發布:2024-11-15 08:36:46 瀏覽:8
安卓手機怎麼查詢自己的路線軌跡 發布:2024-11-15 08:32:19 瀏覽:969
phpdatet 發布:2024-11-15 08:32:17 瀏覽:507
HDB3編解碼實驗 發布:2024-11-15 08:17:31 瀏覽:212