鏈表與文件

鏈表

單鏈表

1.鏈表的初始化

typedef struct node
{char name[100];int  number;struct node *next;
}Node,*LinkList;}Node;

2.鏈表的初始化函數(Initlist)

LinkList InitList()
{LinkList head;head=(Node*)malloc(sizeof(Node));head->next=NULL;return head;
}

3.建立鏈表(Creatbyrear/Creatbyhead)

(1)尾插法

有頭節點

void CreatByRear(LinkList head)
{Node *r,s;char name[100];int  number;r=head;printf("輸入");while(1){scanf("%s",name);scanf("%d",&number);if(number==0){break;}
*                s=(Node*)malloc(sizeof(Node));strcpy(s->name,name);s->number=number;r->next=s;r=s;}r->next=NULL;
}

無頭結點

Node* Creatbyrear()
{Node* head;head=NULL;Node *p,r;while(1){char name[100];int number;scanf("%s",name);scanf("%d",&number);if(number==0){break;}
*                p=(Node*)malloc(sizeof(Node));strcpy(p->name,name);p->number=number;p->next=NULL;if(NULL==head){head=p;r=head;}else{r->next=p;r=p;}}return head;
}
(2)頭插法

有頭節點

void CreatByHead(LinkList head)
{Node s;char name[100];int number;printf("輸入");while(1){scanf("%s",name);scanf("%d",&number);if(number==0){break;}
*                s=(Node*)malloc(sizeof(Node));strcpy(s->name,name);s->number=number;s->next=head->next;head->next=s;}
}

無頭結點

Node* Creatbyhead()
{Node *head;head=NULL;Node s;printf("輸入\n");while(1){int number;char name[100];scanf("%s",name);scanf("%d",&number);if(number==0){break;}*s=(Node*)malloc(sizeof(Node));strcpy(s->name,name);s->number=number;s->next=head;head=s;}return head;
}

4.輸出(Output)

有頭節點

void OutPut(LinkList head)
{Node *p;p=head->next;printf("輸出\n");while(p){printf("%s ",p->name);printf("%d\n",p->number);p=p->next;}
}

無頭結點

void Output(Node *head)
{Node *p;p=head;while(p){printf("%s ",p->name);printf("%d\n",p->number);p=p->next;}
}

5.插入(Insert)

有頭節點

void Insert(LinkList head,int i)
{Node *p=head,s;int j=0;while(j<i-1&&p){p=p->next;j++;}if(p){printf("插入");*s=(Node*)malloc(sizeof(Node));scanf("%s",s->name);scanf("%d",&s->number);s->next=p->next;p->next=s;}
}

頭插入

void InsertHead(LinkList head)
{Node s;*s=(Node*)malloc(sizeof(Node));printf("頭插入");scanf("%s",s->name);scanf("%d",&s->number);s->next=head->next;head->next=s;} 

尾插入

void InsertRear(LinkList head)
{Node *p=head,s;while(p&&p->next){p=p->next;}if(p){printf("末插入");
*                s=(Node*)malloc(sizeof(Node));scanf("%s",s->name);scanf("%d",&s->number);p->next=s;s->next=NULL;}}

無頭結點

Node* Insertlist(Node *head,int pos)
{printf("插入\n");Node *s,p;*s=(Node*)malloc(sizeof(Node));scanf("%s",s->name);scanf("%d",&s->number);if(pos==1){s->next=head;head=s;}else{p=head;int j=1;while(j<pos-1&&p){p=p->next;j++;}if(p){s->next=p->next;p->next=s;}}return head;
}

6.刪除(Delete)

有頭節點

void Delete(LinkList head,int pos)
{Node *r=head,*p;int j=0;printf("刪除后");while(j<pos-1&&r){r=r->next;j++;}if(r==NULL||r->next==NULL){printf("Error!");}else{p=r->next;r->next=p->next;free(p);}}

無頭結點

Node* Delete(Node *head,int pos)
{printf("刪除后的");Node *p,*q;p=head;if(head==NULL){printf("ERROR!");}else if(pos==1){q=head;head=head->next;free(q);}else{int j=1;while(j<pos-1&&p){p=p->next;j++;}if(p==NULL||p->next==NULL){printf("ERROR");}else{q=p->next;p->next=q->next;free(q);}}return head;
}

7.查詢(Search)

有頭節點

Node* Search(LinkList head,char name[])
{Node *p=head->next;while(p){if(strcmp(p->name,name)!=0){p=p->next;}else{break;}if(p=NULL){printf("error!") ;}return p;}
}

無頭結點

void Search(Node *head)
{printf("查詢");Node *p;p=head;int t=0;char name[100];scanf("%s",name);while(1){if(strcmp(p->name,name)==0){printf("%s ",p->name);printf("%d\n",p->number);t++;}p=p->next;if(p==NULL){break;}}if(t==0){printf("ERROR!");}
}

8.長度(Length)

有頭節點

int ListLength(LinkList head)
{int sum=0;Node *p=head->next;while(p){p=p->next;sum++;}return sum;} 

無頭結點

void Length(Node *head)
{printf("長度\n");Node *p;int count=0;p=head;while(p){if(p==NULL){break;}else{p=p->next;count++;}}printf("%d",count);
}

9.合并鏈表(Merge)

有頭節點

void Merge(LinkList a,LinkList b){Node *p,*q,*r;LinkList c;p=a->next;q=b->next;r=c=a;while(p&&q){if(p->number<q->number){r->next=p;r=p;p=p->next;}else{r->next=q;r=q;q=q->next;}}while(p){r->next=p;r=p;p=p->next;}while(q){r->next=q;r=q;q=q->next;}free(b);}

10.逆置(Reverse)

有頭節點

void Reverse(LinkList head)
{Node *p,*q;p=head->next;head->next=NULL;while(p){q=p->next;p->next=head->next;head->next=p;p=q;}}
Node* Reverse (Node *head)
{    //三指針法if (head == NULL || head->next == NULL){return head;}Node *p = NULL;Node *q = head->next;Node *next ;while (q != NULL) {next = q->next;q->next = p;p = q;q = next;}head->next=p;return head;
}

無頭結點

Node* Reverse(Node* head){Node *p,*q;p=head->next;if(head==NULL){return 0;}if(head->next==NULL)    {return head;}    head->next=NULL;while(p->next!=NULL){q=p->next;p->next=head;head=p;p=q;}p->next=head;head=p;return head;}

11.main函數

有頭節點

int main()
{LinkList a,b;a=InitList();CreatByRear(a);OutPut(a);Insert(a,2);OutPut(a);InsertHead(a);OutPut(a);InsertRear(a);OutPut(a);Delete(a,4);OutPut(a);int sum;sum=ListLength(a);printf("%d\n",sum);b=InitList();CreatByHead(b);OutPut(b);Delete(b,4);OutPut(b);Merge(a,b);OutPut(a);Reverse(a);OutPut(a);return 0;
}

無頭結點

int main()
{node *a,*b;a=CreatByRear(a);OutPut(a);a=Insert(a,2);OutPut(a);Delete(a,4);OutPut(a);ListLength(a);b=CreatByHead(b);OutPut(b);Delete(b,4);OutPut(b);Merge(a,b);OutPut(a);a=Reverse(a);OutPut(a);return 0;
}

循環鏈表

  • 循環鏈表是一種特殊的鏈表數據結構,與單向鏈表或雙向鏈表相比,循環鏈表的最后一個節點的下一個節點指向第一個節點,從而形成一個環形結構。因此,循環鏈表可以在最后一個節點后繼續添加節點,并且可以像單向鏈表或雙向鏈表一樣遍歷、查找和刪除節點。循環鏈表通常有一個頭指針和一個尾指針,它們指向第一個節點和最后一個節點,以便在添加或刪除節點時快速定位。

  • p->next==head,判斷該節點的指針域是否指向鏈表頭節點。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct node
{char name[100];int number;struct node *next;
}Node;
Node* Initlist()//初始化
{Node *head;head=(Node*)malloc(sizeof(Node));head->next=NULL;return head;
}
void Creatbyrear(Node *head)//尾插法
{printf("輸入\n");Node *r,*s;char name[100];int number;r=head;while(1){s=(Node*)malloc(sizeof(Node));scanf("%s",name);scanf("%d",&number);if(number==0){break;}strcpy(s->name,name);s->number=number;r->next=s;r=s;}r->next=head;
}
void Output(Node* head)//輸出
{printf("輸出\n");Node *s;s=head->next;while(!(s==head)){printf("%s %d\n",s->name,s->number);s=s->next;}
}
void Creatbyhead(Node* head)//頭插法
{Node *s;char name[100];int number;printf("輸入");while(1){scanf("%s",name);scanf("%d",&number);if(number==0){break;}s=(Node*)malloc(sizeof(Node));strcpy(s->name,name);s->number=number;s->next=head->next;head->next=s;}
}
void Delete(Node* head,int pos)//刪除{Node *r=head,*p;int j=0;printf("刪除后\n");do{r=r->next;j++;}while(j<pos-1&&(r!=head));if(r==head||r->next==head){printf("Error!");}else{p=r->next;r->next=r->next->next;free(p);Output(head);}}void Insert(Node* head,int i)//插入
{Node *p=head,*s;int j=0;while(j<i-1&&p){p=p->next;j++;}if(p){printf("插入\n");s=(Node*)malloc(sizeof(Node));scanf("%s",s->name);scanf("%d",&s->number);s->next=p->next;p->next=s;}
}
void Inserthead(Node* head)//頭插入
{Node *s;s=(Node*)malloc(sizeof(Node));printf("頭插入\n"); scanf("%s",s->name);scanf("%d",&s->number);s->next=head->next;head->next=s; } void Insertrear(Node* head)//尾插入{Node *p=head,*s;while((p->next!=head)){p=p->next;}if(p){printf("末插入");s=(Node*)malloc(sizeof(Node));scanf("%s",s->name);scanf("%d",&s->number);p->next=s;s->next=head; }}Node* Search(Node* head,char name[])//查詢
{printf("查詢\n");Node *p=head->next;while(p!=head){if(strcmp(p->name,name)!=0){p=p->next;}else{break;}}if(p==head){printf("error!") ;}return p;
}
void Listlength(Node* head)//長度
{printf("鏈表長度:\n");int sum=0;Node *p=head->next;while(p!=head){p=p->next;sum++;}printf("%d",sum); } Node* Reverse (Node *head)//逆置{    //三指針法if (head == NULL || head->next == NULL){return head;}Node *p = NULL;Node *q = head->next;Node *next ;while (q != head) {next = q->next;q->next = p;p = q;q = next;}head->next=p;return head;
}
int main()
{Node *a,*b;a=Initlist();Creatbyrear(a);Delete(a,2);a=Reverse(a);Output(a); return 0;
}

文件

打開文件

 FILE *fp;fp=fopen("d:/masm.rar/string.h","wt");

r :read 讀,以只讀的方式打開文件,文件必須存在!
w :write 寫,以只寫的方式打開文件,文件如果存在則打開并 清空文件內容,反之新建一個同名文件
a :append 追加,以追加的方式打開文件,文件如果存在則打開,不清除原內容,并在原內容之后,文件尾標志EOF之前繼續寫入,反之新建一個同名文件
t :text 文本文件,可忽略不寫
b :binary 二進制文件
+:w+r 允許讀和寫

關閉文件

fclose(fp);

成功,返回0;發生錯誤,返回非0值;

獲取文件的屬性

fileno()
功 能:把文件流指針轉換成文件描述符
表頭文件:#include <stdlib.h>
定義函數:int fileno(FILE *fp)
返回值 :返回和fp文件流對應的文件描述符。如果失敗,返回-1。

filelength()
功 能:返回文件描述字對應的文件大小,以字節為單位。
表頭文件:#include<io.h>
定義函數:long filelength(int handle_no);

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#include<io.h>
int main()
{FILE *fp;int fno,fsize;char ch;gets(filename);fp=fopen(filename,"a+");fno=fileno(fp);fsize=filelength(fno);printf("%d\n",fsize);fclose(fp);return 0;} 

文件的順序讀寫

單字符讀寫函數

fgetc()
fputc()

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#include<io.h>
int main()
{FILE *fp;int i;char filename[1000];char ch;gets(filename);fp=fopen(filename,"a+");while((ch=fgetc(fp))!=EOF){printf("%c",ch);}char data[10000];while(1){if(toupper(getche())=='Y'){gets(data);for(i=0;i<strlen(data);i++){fputc(data[i],fp);}}else{fclose;getche();break;}}fp=fopen(filename,"rt");if(fp==NULL){getch();exit(1);}while((ch=fgetc(fp))!=EOF);{printf("%c",ch);}fclose(fp);return 0;} 

字符串的讀寫函數

fgets()
fputs()

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<io.h>
#include<ctype.h>
int main()
{FILE *fp;char filename[1000],data[1000];gets(filename);fp=fopen(filename,"at+");if(fp==NULL){getche();exit(1);}while((fgets(data,10,fp))!=NULL){printf("%s",data);}while(1){if(toupper(getche())=='Y'){gets(data);fputs(data,fp);}else{fclose(fp);exit(1);}}fopen(filename,"rt");if(fp==NULL){exit(1);}while(fgets(data,10,fp)!=NULL){printf("%s",data);}fclose(fp);return 0;
}
#include<stdio.h>
#include<string.h>
#include<io.h>
#include<stdlib.h>
int main()
{FILE *fp;int i,j,count,count1;char string[1000000],t,ch;fp=fopen("d:/masm.rar/lab0555.asm","rt");if(fp==NULL){exit(1);}for(i=0;(ch=fgetc(fp))!=EOF;i++){string[i]=ch;putchar(string[i]);}fclose(fp);count1=i;fp=fopen("d:/masm.rar/DOSBox 0.74","rt");if(fp==NULL){exit(1);}for(i=count1;(ch=fgetc(fp))!=EOF;i++){string[i]=ch;printf("%c",string[i]);}fclose(fp);count=i;for(i=0;i<count;i++){for(j=i+1;j<count;j++){if(string[i]<string[j]){t=string[i];string[i]=string[j];string[j];}}}fp=fopen("d:/masm.rar/string.h","wt");fputs(string,fp);fclose(fp);return 0;} 

格式化字符串讀寫函數

fscanf()
fprintf()

#include<stdio.h>
#include<stdlib.h>
int main()
{struct student{char num[100];char name[100];char sex[100];}class[100];FILE *fp;int i;fp=fopen("d:/masm.rar/list","wt");if(fp==NULL){exit(1);}else{for(i=0;i<3;i++){scanf("%s",class[i].num);scanf("%s",class[i].name);scanf("%s",class[i].sex);fprintf(fp,"%s %s %s\n",class[i].num,class[i].name,class[i].sex);}}fclose(fp);fopen("d:/masm.rar/list","rt");i=0;while(fscanf(fp,"%s %s %s",class[i].num,class[i].name,class[i].sex)!=EOF){printf("%s %s %s\n",class[i].num,class[i].name,class[i].sex);i++;}fclose(fp);return 0;
}

數據塊讀寫操作

fread()
fwrite()

#include<stdio.h>
#include<stdlib.h>
int main()
{struct student{char num[100];char name[100];char sex[100];}class[100];FILE *fp;int i;fp=fopen("d:/masm.rar/list","wt");if(fp==NULL){exit(1);}else{for(i=0;i<3;i++){scanf("%s",class[i].num);scanf("%s",class[i].name);scanf("%s",class[i].sex);fwrite(&class[i],sizeof(struct student),1,fp);}}fclose(fp);fp=fopen("d:/masm.rar/list","rt");i=0;while(fread(&class[i],sizeof(struct student),1,fp)!=NULL){printf("%s %s %s\n",class[i].num,class[i].name,class[i].sex);i++;}fclose(fp);return 0;
}

文件的隨機讀寫

rewind()
將文件內部的位置指針移到文件的開始位置。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{FILE *fp;char ch,str[20];fp=fopen("d:/masm.rar/haha","at+");if(fp==NULL){exit(1);}gets(str);fwrite(str,strlen(str),1,fp);ch=fgetc(fp);rewind(fp);while(ch!=EOF){putchar(ch);ch=fgetc(fp);}printf("\n");fclose(fp);return 0;
}

fseek()

#include<stdio.h>
#include<stdlib.h>
struct student
{        char num[20];char name[20];char sex[20];
}q;
int main()
{FILE *fp;int i=1;fp=fopen("d:/masm.rar/list","rt");if(fp==NULL){exit(1);}fseek(fp,i*sizeof(struct student),0);fread(&q,sizeof(struct student),1,fp);fclose(fp);return 0;
}

ftell()
得到位置指針的當前位置,如果返回值為-1L,則表示出錯。

#include<stdio.h>
#include<stdlib.h>
struct student
{        char num[20];char name[20];char sex[20];
}q;
int main()
{FILE *fp;int i=1;fp=fopen("d:/masm.rar/list","rt");if(fp==NULL){exit(1);}int t=ftell(fp);printf("%d\n",t);fseek(fp,i*sizeof(struct student),0);fread(&q,sizeof(struct student),1,fp);t=ftell(fp);printf("%d",t);return 0;
}

putw 函數(適用于二進制文件)

putw函數表示整數輸出。
其一般形式為: putw(i,fp);
功能:將整數i輸出到文件fp之中。

getw 函數(只適用于二進制文件)

getw函數表示整數輸入。
一般形式為:
int a;
a=getw(fp);
功能:從fp指向的文件中讀取一個整數(2字節),整數由函數返回。只使用于二進制文件。

出錯檢查

feof(fp)

fp:文件指針變量
功能:判斷文件是否處于文件結束位置。如果文件結束,則返回1,否則返回0。

ferror 函數

函數返回值:無錯誤出現時返回0;有錯誤出現時,返回一個非零值。

clearerr函數

clearerr的作用是使文件出錯標志和文件結束標志置為0。假設在調用一個輸入輸出函數時出現錯誤,ferror函數值為一個非零值。應該立即調用clearerr(fp),使ferror(fp)的值變成0,以便再進行下一次的檢測。只要出現文件讀寫出錯標志,它就一直保留,直到對同一文件調用clearerr函數或rewind函數,或任何其他一個輸入輸出函數。
對同一個文件每一次調用輸入輸出函數,都會產生一個新的ferror函數值,因此,應當在調用一個輸入輸出函數后立即檢查ferror函數的值,否則信息會丟失。在執行fopen函數時,ferror函數的初始值自動置為0。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79927.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79927.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79927.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uniapp打ios包

uniapp在windows電腦下申請證書并打包上架 前言 該開發筆記記錄了在window系統下&#xff0c;在蘋果開發者網站生成不同證書&#xff0c;進行uniapp打包調試和上線發布&#xff0c;對window用戶友好 注&#xff1a;蘋果打包涉及到兩種證書&#xff1a;開發證書 和 分發證書 …

OpenCV 圖形API(48)顏色空間轉換-----將 LUV 顏色空間的圖像數據轉換為 BGR 顏色空間函數LUV2BGR()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 將圖像從LUV顏色空間轉換為BGR顏色空間。 該函數將輸入圖像從LUV顏色空間轉換為BGR。B、G和R通道值的常規范圍是0到255。 輸出圖像必須是8位無符…

HOW MUCH POSITION INFORMATION DO CONVOLUTIONAL NEURAL NETWORKS ENCODE?

1. 動機: 卷積神經網絡中的卷積操作實際上是一個局部的操作,這樣的話就會使得它雖然知道自己看的是什么,但是卻不清楚他在圖像中的位置信息,但是位置信息實際上是很有用的,因此CNN可能潛在的學習到了如何去編碼這種位置信息。所以這篇論文就是為了研究這種位置信息是如何在…

56、如何快速讓?個盒??平垂直居中

在網頁開發中&#xff0c;有多種方式能讓一個盒子實現水平垂直居中。下面為你介紹幾種常見且快速的方法。 1. 使用 Flexbox 布局 Flexbox 是一種非常便捷的布局模型&#xff0c;能夠輕松實現元素的水平和垂直居中。 html <!DOCTYPE html> <html lang"en"&…

RAG應用過程監控系統選型:LangFuse

Langfuse 是一個開源的大語言模型&#xff08;LLM&#xff09;工程平臺&#xff0c;旨在協助團隊構建、調試和改進由人工智能驅動的應用程序。憑借其全面的工具套件&#xff0c;Langfuse 使開發者能夠深入洞察其 LLM 應用程序&#xff0c;并優化性能。 Stars 數10,522Forks 數9…

Java+nanomsg快速實現去broker的數據通信

先說一下nanomsgJava需要做什么&#xff1a; 1、nanomsg的so文件的制作與放置路徑 2、Java代碼引入nanomsg的依賴 3、支持Socket參數的調節&#xff08;包括ipv4/ipv6的網絡支持&#xff09; 在我目前的認知范圍內要與一個通訊目標實現數據交互通常有這些方式 1、broker中間人…

lightgbm原理、特殊點、參數分析

lightgbm&#xff1a; 一、位置&#xff1a; 相比XGB&#xff0c;LGBM有更高效的計算效率和更低的內存占用&#xff0c;并且面對高維數據&#xff0c;LGBM算法擁有更好的過擬合特性&#xff0c;這使得在建模數據量日趨增加的今天&#xff0c;LGBM會更適合作為前期探索性建模的模…

車載軟件架構 --- 二級boot設計說明需求規范

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 周末洗了一個澡,換了一身衣服,出了門卻不知道去哪兒,不知道去找誰,漫無目的走著,大概這就是成年人最深的孤獨吧! 舊人不知我近況,新人不知我過…

Cpp實現window上cmd執行效果

Cpp實現window上cmd執行效果 文章目錄 Cpp實現window上cmd執行效果1.頭文件包含部分2.main 函數部分3. 獲取當前工作目錄部分4.主循環部分5.退出條件部分6.處理 cd 命令部分7.執行其他命令部分8.讀取命令輸出部分9.關閉管道并處理返回碼部分10.源碼 1.頭文件包含部分 #include…

STM32 HAL庫FreeRTOS 中斷管理

一、引言 在嵌入式系統開發中&#xff0c;STM32 微控制器憑借其高性能、低功耗和豐富的外設資源&#xff0c;被廣泛應用于各種領域。FreeRTOS 作為一款輕量級、開源且功能強大的實時操作系統&#xff0c;為多任務處理提供了良好的支持。中斷是嵌入式系統中實現實時響應外部事件…

在 UE5 編輯器中,由于游戲設置 -> EV100 設置,點擊播放前后的光照不同。如何保持點擊播放前后的光照一致?

?In Unreal Engine 5 (UE5), discrepancies in lighting between the editor and play modes are often due to auto exposure settings, particularly when using the EV100 system. To maintain consistent lighting across both modes, follow these steps:?YouTube1Epic …

[python] set

1.添加元素 在 Python 中&#xff0c;向 set 添加一個元素可以使用 add() 方法。如果添加的元素已經存在于 set 中&#xff0c;add() 不會重復添加&#xff08;因為 set 具有自動去重的特性&#xff09;。 方法 1&#xff1a;add(element)&#xff08;添加單個元素&#xff0…

第一期第18講26:23

shell腳本以 .sh為后綴&#xff0c;里面存放著一行行要運行的linux指令。 shell腳本第一行一定為 #!/bin/bash&#xff0c;表示使用bash。 shell文件舉例如下&#xff1a; #!/bin/bash echo "hello shell!" shell文件默認沒有可執行權限&#xff0c;因此 chmod 777 m…

解決 Ubuntu 下 VTune 無法收集 CPU 硬件時間計數數據的問題

解決 Ubuntu 下 VTune 無法收集 CPU 硬件時間計數數據的問題 在 Ubuntu 上使用 Intel VTune Profiler 時遇到無法收集 CPU 硬件性能計數器數據的問題&#xff0c;通常是由于權限和系統配置問題導致的。以下是解決方案&#xff1a; 1. 檢查并加載性能監控模塊 首先確保 Linux…

健康元 以韌性換彈性

拼韌性的時候到了&#xff01; 一面是復雜的市場、政策環境與醫藥行業轉型所疊加形成的向下壓力&#xff1b;一面是AI技術深度賦能醫藥企業創新加速的向上機遇。 中國藥企在經歷了一輪群體性低潮期后&#xff0c;進入“結構性”分化的階段。 在這一階段上&#xff0c;一些財…

csv數據的讀取

在地理信息系統&#xff08;GIS&#xff09;項目中&#xff0c;CSV&#xff08;Comma-Separated Values&#xff09;文件是一種常見的數據格式&#xff0c;用于存儲表格數據。CSV 文件因其簡單易用、可被多種軟件讀取而廣泛應用于數據交換和存儲。ArcPy 提供了強大的功能&#…

android Stagefright框架

作為Android音視頻開發人員&#xff0c;學習Stagefright框架需要結合理論、源碼分析和實踐驗證。以下是系統化的學習路徑&#xff1a; 1. 基礎準備 熟悉Android多媒體體系 掌握MediaPlayer、MediaCodec、MediaExtractor等核心API的用法。 理解Android的OpenMAX IL&#xff08…

【基于WSAAsyncSelec模型的通信程序設計】

文章目錄 一、實驗背景與目的二、實驗設計與實現思路1. 設計思想2. 核心代碼實現 總結 一、實驗背景與目的 這次實驗主要是為了讓大家了解基于 WSAAsyncSelect 模型通信程序的編寫、編譯和執行過程。通過實踐操作&#xff0c;深入掌握這種模型在實現計算機之間通信時的應用。 …

JAVA:利用 Apache Tika 提取文件內容的技術指南

1、簡述 Apache Tika 是一個強大的工具,用于從各種文件中提取內容和元數據。??Tika 支持解析文檔、??圖像、??音頻、??視頻文件以及其他多種格式,非常適合構建??搜索引擎、??內容管理系統和??數據分析工具。 樣例代碼:https://gitee.com/lhdxhl/springboot-…

數碼管靜態顯示一位字符(STC89C52單片機)

#include <reg52.h> sbit ADDR0 P1^0; sbit ADDR1 P1^1; sbit ADDR2 P1^2; sbit ADDR3 P1^3; sbit ENLED P1^4; //用數組來存儲數碼管的真值表&#xff0c;數組將在下一章詳細介紹 unsigned char code LedChar[] { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82…