當前位置:首頁 » 編程語言 » c語言存表

c語言存表

發布時間: 2022-06-15 17:05:58

1. c語言保存鏈表問題!

fwrite(stup,sizeof(STUINFO),1,fp);
肯定會出錯..stup是鏈表結構體類型. fwrite參數不對

鏈表節點定義.應該定義一個用來存儲從文件讀入數據的buf
寫成
fwrite(stup.buf, 256, 1, fp);

2. C語言鏈表保存問題(高手請進!)

程序崩潰的問題,最好通過調試來定位。
(1)確定問題出在save()函數中
(2)確定出問題的代碼范圍
(3)檢查變數的值。在你的代碼中,最容易出問題的地方是指針p;也許你的鏈表在添加各個節點的時候有問題,導致p->next成為非法值;還有你要確保鏈表末尾節點的next指針為NULL。

3. 如何把一張表格存儲用C語言在單片機里啊

呵呵 人家說的對的 就用數組 財富值沒關系 我看能不能幫到你
int main()
{ int n[4][4]={0,0.1,0.2,0.3,1,11,12,13,2,10,9,12,3,12,14,16};
/*這就是把這個表格以數組形式給定義了*/
int m;
int find(int a,int b)/*定義根據a,b的值輸出對應的m值的函數*/
{ scanf("d% d%",a,b);/*輸入a,b的值,格式可能不對*/
int p1;
int p2;
int i;
int m1;
for(i=1;i<4;i++) /*找對應的的行值*/
{ if(n[0][i]==a)
p1=i;
}

for(i=1;i<4;i++)/*找對應的列值*/
{ if(n[i][0]==b)
p2=i;
}

m1=n[p1][p2]; /*根據行列值來定m的值*/
return m1;
}

m=find(int a,int b);/*調用這個函數*/

printf("d%",m);/*輸出M*/

}

定義和格式沒仔細檢查,編譯未必通過,但原理是這樣的,自己改改吧

4. 利用c語言實現順序存儲線性表的插入!

有時會出現這種情況。他會以為是木馬。
int GetElem();
int InstInsert();
typedef int ElemType;
typedef struct{
ElemType *elem; //存儲空間基地址
int length; //當前長度
int listsize;//當前分配的存儲容量
}SqList;
int InitList(SqList *L){
L->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem)exit(-1);//存儲空間分配失敗
L->length=0; //空表長度為0
L->listsize=LIST_INIT_SIZE; //初始存儲容量
printf("線性鏈表創建成功\n");
return OK;
}
int Input(SqList *L){
ElemType temp,*newbase;
printf("輸入順序列表的數據,以0為結束標志\n");
scanf("%d",&temp);
while(temp!=0){
if(L->length>=L->listsize){
newbase=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!newbase) exit(-1);//存儲空間分配失敗
L->elem=newbase; //空間新基地址
L->listsize+=LISTINCREMENT; //增加存儲容量
}
L->elem[L->length++]=temp;
scanf("%d",&temp);
}
printf("輸入數據結束!!\n");
return OK;
}
int Onput(SqList *L){
int i=0;
printf("輸出線性表數據:");
while(i<L->length){
printf("%d\t",L->elem[i]);
i++;
}
printf("\n");
}
int ClearList(SqList *L){
L->length=0;
printf("清除成功!\n");
return OK;
}
void ListEmpty(SqList L){
if(L.elem!=NULL)
printf("true!\n");
else
printf("false!\n");
}
void ListLength(SqList L){
printf("線性表的長度是:%d\n",L.length);
return ;
}
int GetElem(SqList L,int i,SqList *e){
e=L.elem[i-1];
return e;
}
void PriorElem(SqList L,int cur_e,SqList *pre_e){
if(cur_e!=L.elem[0]){
pre_e=L.elem[0];
printf("前驅值為:%d\n",pre_e);
}
else
printf("pre_e無意義\n");
}
void NextElem(SqList L,int cur_e,SqList *next_e){
if(cur_e!=L.elem[L.length-1]){
next_e=L.elem[L.length-1];
printf("後繼值為:%d\n",next_e);
}
else
printf("next_e無意義\n");
}
int ListInsert(SqList *L,int i,int e){
ElemType *newbase,*p,*q;
if(1>i||i>(L->length+1))
return -1;
if(L->length>=L->listsize){ //新增內存
newbase=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)); //開辟新內存空間
if(!newbase)
exit(-1); //存儲分配失敗
L->elem=newbase; //新基地址
L->listsize+=LISTINCREMENT; //新增內存容量
}
q=&(L->elem[i-1]);
for(p=&(L->elem[L->length-1]);p>=q;p--){
*(p+1)=*p;
}
*q=e;
++L->length;
return OK;
}
int ListDelete(SqList *L,int i,int e){
ElemType *p,*q;
if(i<1||i>L->length)
return -1;
q=&(L->elem[i-1]);
e=L->elem[i-1];
p=L->elem+L->length-1;
for(;p>=q;q++)
*q=*(q+1);
--L->length;
printf("刪除的值為:%d\n",e);
return OK;
}

5. C語言怎麼存鏈表形式的結構體文件

看你的代碼是每次寫入一個節點到文件,但是fwrite(p,sizeof(struct room),NUM,fp);這句是每次寫入NUM大小的一個room數組,把NUM改成1:
fwrite(p,sizeof(struct room),1,fp); //每次寫入一個節點

6. C語言 鏈表保存

這個文件是為了用記事文本之類的工具打開以便於人們閱讀還是為了保存二進制數據以便於程序讀取?

w格式是寫文件,即每次重新打開文件進行寫操作都會覆蓋該文件中之前已有的內容。

7. c語言,關於保存鏈表到文件和從文件裝載鏈表(高手請進,急)

拿去用吧~
#include<stdio.h>
#include<malloc.h>
#include<string.h>
structaddress
{
inta;
intb;
charc;
address*next;
};
voidSaveToFile(structaddress*p,FILE*fp)
{
if(p!=NULL)
{
do
{
fwrite(p,sizeof(structaddress),1,fp);
p=p->next;
}
while(p!=NULL);
}
}
intload(FILE*fp,structaddress**head,int&n)//讀取文件數據,建立鏈表
{
structaddress*p1,*p2;
*head=(structaddress*)malloc(sizeof(structaddress));
memset(*head,0,sizeof(structaddress));
if(fread(*head,sizeof(structaddress),1,fp)!=1)
{
free(*head);
*head=NULL;
return(0);
}
p2=*head;
n++;
while(!feof(fp))
{
p1=(structaddress*)malloc(sizeof(structaddress));
fread(p1,sizeof(structaddress),1,fp);
p2->next=p1;
p2=p1;
n++;
}
p2->next=NULL;
return(n);
}
voidmain()
{
structaddress*head;
intn=0;
structaddress*Test[10]={0};
inti=0;
FILE*fp=NULL;
for(;i<10;i++)
{
Test[i]=(structaddress*)malloc(sizeof(structaddress));
if(Test[i]!=NULL)
{
memset(Test[i],0,sizeof(structaddress));
//輸入你的數據(a,b,c)
//如下
Test[i]->a=100+i;//不用則注釋掉
}
}
for(i=0;i<10;i++)
{
if(i<10)
{
Test[i]->next=Test[i+1];//將結構指針連成鏈表
}
}
if((fp=fopen("addrbook","wb"))!=NULL)
{
SaveToFile(Test[0],fp);
fclose(fp);
}
if((fp=fopen("addrbook","rb"))!=NULL)
{
load(fp,&head,n);
}
}

8. 在C語言處理表格一類的問題 ,定義什麼數據類型的變數保存表格數據

看你表格裡面存的是什麼數據了
如果不同列數據類型不同,那麼最好的方式是結構體
然後每列有自己的成員變數,定義對應類型,整型,浮點型,字元串什麼的

9. C語言中如何實現用文件保存一個動態的鏈表

隨便說說
你可以
鏈表
的每一個結點,保存為一行.或者有一個特殊的符號來分割不同的結點,如果結點內有不同意義的數據,也可以用特殊的符號來分割,
這里要說明
因為c語言支持的只有流試文件
所以在文件存儲鏈表的時候只能存儲
單向鏈表

10. C語言 鏈表存儲問題!!急

只將數據域的內容保存就行了,下次再打開這個文件取出數據域重新建表。

比如結點的數據結構如下:

struct node{
int data;
struct node *next;
}

那麼其中的data就是數據域,只保存它的值就可以,next指針變數的值沒有必要保存,因為程序每次分配的空間地址是不一樣的。

下一次要重建鏈表時,只要用從文件提取的數據域值以data成員進行賦值就可以重現上次保存時的鏈表了。

熱點內容
壓縮機消音罩 發布:2025-02-12 02:37:41 瀏覽:528
javawsdl2java 發布:2025-02-12 02:25:21 瀏覽:367
java默認許可權 發布:2025-02-12 02:25:20 瀏覽:656
演算法預測用戶 發布:2025-02-12 02:24:44 瀏覽:390
舊電腦搭建網路列印伺服器 發布:2025-02-12 02:09:45 瀏覽:649
c語言順序表基本操作 發布:2025-02-12 02:09:41 瀏覽:888
安卓光遇怎麼開三檔畫質華為 發布:2025-02-12 01:55:51 瀏覽:193
微信哪裡能找到登陸游戲的密碼 發布:2025-02-12 01:54:22 瀏覽:591
php獲取伺服器ip地址 發布:2025-02-12 01:54:12 瀏覽:579
對象存儲和nas哪個好 發布:2025-02-12 01:50:34 瀏覽:445