【C語言】文件操作講解

C語言文件操作講解

  • 文件
  • 文件名
  • 文件類型
    • 數據在內存中的存儲
  • 文件緩沖區
  • 文件指針
  • 文件的打開與關閉
    • fopen
    • fclose
    • fopen與fclose的使用
    • 文件的打開方式
  • 文件的順序讀寫
    • fputc
    • fgetc
    • fputs
    • fgets
    • fprintf
    • fscanf
    • fwrite
    • fread
    • 輸入流與輸出流
    • 對比scanf\fscanf\sscanf與printf\fprintf\sprintf
      • sscanf與sprintf
  • 文件的隨機讀寫
    • fseek
    • ftell
    • rewind
  • 文件結束判斷

文件

我們熟知,我們常見的文件就是磁盤上存儲的文件。在程序設計中,所涉及的文件有倆種:程序文件、數據文件

  • 程序文件:

包括源程序文件(后綴為.c),目標文件(windows環境后綴為.obj),可執行程序(Windows環境后綴為.exe)

  • 數據文件:

文件的內容不一定時程序,而是程序運行時讀寫的數據,比如程序運行需要從中讀取數據的文件,或者輸出內存的文件

在vs中使用printf和scanf處理數據的輸入輸出都是以終端為對象的,即從終端的鍵盤輸入數據,運行結果顯示到顯示器上。同時可以將信息輸出到磁盤上,當需要的時候將磁盤上的數據讀取到內存上使用,即處理磁盤上文件

文件名

一個文件有一個唯一的文件標識,以便用戶識別與引用。

  • 文件名包含三部分:文件路徑+文件名主干+文件后綴

例如:D:\code\c_languege_2\c_2004_5_13(7)\c_2004_5_13(7)\test.c

文件標識常被稱為文件名

文件類型

根據數據的組織形式,數據文件被稱為文本文件或者二進制文件

  • 文本文件

數據原本在內存中以二進制形式存儲,如果要求在外存上以ASCII碼的形式存儲,則需要在存儲前轉換。以ASCII字符的形式存儲的文件就是文本文件。

  • 二進制文件

數據在內存中以二進制的形式存儲,如果不加轉換的輸出到外存,就是二進制文件。

數據在內存中的存儲

字符一律以ASCII形式存儲,數值型數據既可以用ASCII形式存儲,也可以使用二進制形式存儲

以100000為例:

以ASCII碼形式輸出到磁盤:
1 0 0 0 0
相當于在磁盤中占用了五個字節,每個字符與每個字符都是分開計算的
00110001 00110000 00110000 00110000 00110000

以二進制形式輸出到磁盤(以電腦的存儲方式為小端為例)
10 27 00 00
以十六進制的形式顯示,每倆個數代表一個字節
00000000 00000000 00100111 00010000

使用代碼測試:

#include<stdio.h>
int main(void)
{int a = 0;//FILE后面介紹FILE* pf = fopen("test.txt", "wb");//以二進制形式寫到文中fwrite(&a, 4, 1, pf);fclose(pf);pf = NULL;return 0;
}

在這里插入圖片描述

文件緩沖區

在這里插入圖片描述
ASCII標準采用“緩沖文件系統”處理數據文件,所謂緩沖文件系統是指系統自動地在內存中為程序中每一個正在使用的文件開辟一塊“文件緩沖區”。從內存向磁盤輸出數據會先送到內存中的緩沖區,充滿緩沖區后才一起送到磁盤上。如果從磁盤向計算機讀入數據,則從磁盤文件中讀取數據輸入到內存緩沖區,充滿緩沖區后再從緩沖區逐個將數據送到程序數據區(程序變量等)。緩沖區的大小根據編譯系統決定。

文件指針

緩沖文件系統中,關鍵的概念是“文件類型指針”,簡稱“文件指針"。

每個被使用的文件都在內存中開辟了一個相應的文件信息區,用來存放文件的相關信息(如文件的名字,文件狀態及文件當前的位置等等)。這些信息是保存再一個結構體變量中的,這個結構體變量是由系統聲明的,為FILE.

  • FILE在某些編譯器上的聲明
struct _iobuf
{char* _ptr;int _cnt;char* _base;int _flag;int _file;int _charbuf;int _bufsiz;char* _tmpfname;
};
typedef struct _iobuf FILE;

不同的編譯器定義的FILE類型包含的內容不完全相同。

每次打開文件時,系統會根據文件的情況自動創建一個FILE結構的變量,并填充信息。

  • 使用指針維護FLIE結構的變量:
	FILE* pf;

pf指針是一個指向FILE類型數據的指針變量,可以使pf指向某個文件的文件信息區,通過該文件信息區中的信息就可以訪問該文件,即通過指針變量找到與FILE相關聯的文件

文件的打開與關閉

fopen

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

  • fopen的介紹:

FILE* fopen (const char* filename,const char* mode);

文件在讀寫之前打開文件

fclose

在這里插入圖片描述

  • fclose介紹

int fclose(FILE* stream);

在文件使用結束后關閉文件

fopen與fclose的使用

#include<stdio.h>
int main(void)
{FILE* pf = fopen("test.txt", "w");if(pf!=NULL){fputs("fopen",pf);fclose(pf);}return 0;
}

文件的打開方式

文件使用方式含義如果指定文件不存在
“r”(只讀)為了輸入數據,打開一個已經存在的文本文件出錯
“w”(只寫)為了輸出數據,打開一個文本文件建立一個新文件
“a”(追加)向文本文件尾添加數據出錯
“rb”(只讀)為了輸入數據,打開一個二進制文件出錯
“wb”(只寫)為了輸出數據,打開一個二進制文件建立一個新文件
“ab”(追加)向一個二進制文件尾添加數據出錯
“r+”(讀寫)為了讀和寫,打開一個文本文件出錯
“w+”(讀寫)為了讀和寫,建立一個新的文件建立一個新文件
“a+”(讀寫)打開一個文件,在文件尾進行讀寫建立一個新文件
“rb+”(讀寫)為了讀和寫,打開一個二進制文件出差
“wb+”(讀寫)為了讀和寫,新建一個二進制文件建立一個新文件
“ab+”(讀寫)打開一個二進制文件,在文件尾進行讀和寫建立一個新文件

文件的順序讀寫

功能函數名適用于
字符輸入函數fgets所以輸入流
字符輸出函數fputs所以輸入流
文本行輸入函數fgets所有輸入流
文本行輸出函數fputs所有輸出流
格式化輸入函數fscanf所有輸入流
格式化輸出函數fprintf所有輸出流
二進制輸入fread文件
二進制輸出fwrite文件

fputc

在這里插入圖片描述

  • fputc介紹:

int fputc ( int character, FILE * stream );
向流中輸入字符

int main(void)
{//以只寫的方式打開文件FILE* pf = fopen("test.txt", "w");if (pf == NULL){perror("fopen");return 1;}//向文件中寫字符fputc('h', pf);fputc('e', pf);fputc('l', pf);fputc('l', pf);fputc('o', pf);//關閉文件fclose(pf);pf = NULL;return 0;
}

在這里插入圖片描述

fgetc

在這里插入圖片描述

  • fgetc介紹:

int fgetc ( FILE * stream );
從流中讀取字符

  • fgetc實際使用:
int main(void)
{//以只讀的方式打開文件FILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}//讀取文件中的字符char ch;ch = fgetc(pf);printf("%c ",ch);ch = fgetc(pf);printf("%c ", ch);ch = fgetc(pf);printf("%c ", ch);ch = fgetc(pf);printf("%c ", ch);//關閉文件fclose(pf);pf = NULL;return 0;
}

在這里插入圖片描述

fputs

在這里插入圖片描述

  • fputs介紹:

int fputs ( const char * str, FILE * stream );
向流中輸入字符串

int main(void)
{//以只寫的方式打開文件FILE* pf = fopen("test.txt", "w");if (pf == NULL){perror("fopen");return 1;}//向文件中的寫字符串fputs("hello\n", pf);fputs("world", pf);//關閉文件fclose(pf);pf = NULL;return 0;
}

在這里插入圖片描述

fgets

在這里插入圖片描述

  • fgets介紹:

char * fgets ( char * str, int num, FILE * stream );
從流中讀取字符串

int main(void)
{//以只讀的方式打開文件FILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}//讀取文件中的字符串char ch[20];fgets(ch, 20, pf);printf("%s", ch);fgets(ch, 20, pf);printf("%s", ch);//關閉文件fclose(pf);pf = NULL;return 0;
}

在這里插入圖片描述

fprintf

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

  • fprintf介紹:

int fprintf ( FILE * stream, const char * format, … );
向流中輸入格式數據

int main(void)
{struct stu{char name[10];int age;char sex[5];};struct stu s = { "小明",6,"男"};//以只寫的方式打開文件FILE* pf = fopen("test.txt", "w");if (pf == NULL){perror("fopen");return 1;}//向文件中的輸入格式數據fprintf(pf, "%s %d %s", s.name, s.age, s.sex);//關閉文件fclose(pf);pf = NULL;return 0;
}

在這里插入圖片描述

fscanf

在這里插入圖片描述

  • fscanf介紹:

int fscanf ( FILE * stream, const char * format, … );
向流中讀取格式化數據

int main(void)
{struct stu{char name[10];int age;char sex[5];};struct stu s = {0 };//以只讀的方式打開文件FILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}//向文件中的輸入格式數據fscanf(pf, "%s %d %s", s.name, &(s.age), &(s.sex));printf("%s %d %s", s.name, s.age, s.sex);//關閉文件fclose(pf);pf = NULL;return 0;
}

在這里插入圖片描述

fwrite

在這里插入圖片描述

  • fwrite介紹

size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );向流中輸入二進制數據

struct stu
{char name[10];int age;char sex[5];
};int main(void)
{struct stu s = { "小明",20,"男" };FILE* pf = fopen("test.txt", "wb");if (pf == NULL){perror("fopen");return 1;}//向流中輸入二進制數據fwrite(&s, sizeof(struct stu), 1, pf);fclose(pf);pf==NULL;return 0;
}

fread

在這里插入圖片描述

  • fread介紹:

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );從流中讀取二進制的數據

struct stu
{char name[10];int age;char sex[5];
};int main(void)
{struct stu s = { 0 };FILE* pf = fopen("test.txt", "rb");if (pf == NULL){perror("fopen");return 1;}//從流中讀取二進制的數據fread(&s, sizeof(struct stu), 1, pf);printf("%s %d %s",s.name,s.age,s.sex);fclose(pf);pf == NULL;return 0;
}

在這里插入圖片描述

輸入流與輸出流

在這里插入圖片描述

與平常在學習c語言過程中使用scanf與printf類似,scanf將鍵盤上的數據讀取到內存上,printf將內存上的數據打印在屏幕上,內存面向文件時也是同樣的操作,使用fputs,fputc,fprintf將數據輸出到文件中,使用fgets,fgetc,fscanf將數據從文件讀取到內存中。

在面向文件時,數據會通過一種方式來與文件進行輸入輸出,而數組不僅僅可以面向文件,還可以面向屏幕,文件,網絡,網盤等等,這時就需要一種流來將數據傳輸在不同的輸出設備上,以便程序員使用。

在任何一個C語言程序運行的時候都會默認打開三個流:stdin,stdout,stderr.

在這里插入圖片描述

printf與scanf都是僅適用于標準輸入流,標準輸出流

struct stu
{char name[10];int age;char sex[5];
};int main(viod)
{struct stu s = { 0 };//鍵盤格式化輸入數據fscanf(stdin, "%s %d %s", s.name, &(s.age), &(s.sex));//屏幕格式化輸出數據fprintf(stdout, "%s %d %s", s.name, s.age, s.sex);return 0;
}

在這里插入圖片描述

對比scanf\fscanf\sscanf與printf\fprintf\sprintf

  • scanf與printf
    scanf——從鍵盤上讀取格式化的數據(stdin)
    printf——把數據寫到(輸出)屏幕(stdout)

  • fscanf與fprintf

fscanf——針對所有輸入流的格式化的輸入函數(stdin,打開的文件等等)
fprintf——針對所有輸出流的格式化的輸出函數(stdout,打開的文件等等)

  • sscanf與sprintf

sscanf——從一個字符串中還原一個格式化數據
sprintf——把一個格式化的數據,存放在(轉換成)一個字符串

sscanf與sprintf

  • sscanf介紹

在這里插入圖片描述

  • sprintf介紹

在這里插入圖片描述
sscanf與sprintf使用:

struct stu
{char name[10];int age;char sex[5];
};int main(void)
{struct stu s = { "小明",20,"男" };//sprintf——把一個格式化的數據,存放在(轉換成)一個字符串char ch[100] = { 0 };sprintf(ch, "%s %d %s", s.name, s.age, s.sex);printf("%s\n", ch);//sscanf——從一個字符串中還原一個格式化數據struct stu tmp = { 0 };sscanf(ch, "%s %d %s", tmp.name, &(tmp.age), &(tmp.sex));printf("%s %d %s", tmp.name, tmp.age, tmp.sex);return 0;
}

在這里插入圖片描述

文件的隨機讀寫

fseek

在這里插入圖片描述

  • fseek介紹:

int fseek ( FILE * stream, long int offset, int origin );

根據文件指針位置和偏移量來定位文件指針

int main(void)
{FILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}else{char tmp;tmp = fgetc(pf);printf("%c\n",tmp);tmp = fgetc(pf);printf("%c\n", tmp);fseek(pf, -1, SEEK_CUR);tmp = fgetc(pf);printf("%c\n", tmp);fseek(pf, -1, SEEK_CUR);tmp = fgetc(pf);printf("%c\n", tmp);return 0;}
}

在這里插入圖片描述

ftell

在這里插入圖片描述

  • ftell介紹

long int ftell ( FILE * stream );

返回文件指針相對于起始位置的偏移量

int main(void)
{FILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}else{char tmp;tmp = fgetc(pf);printf("%c\n",tmp);tmp = fgetc(pf);printf("%c\n", tmp);fseek(pf, -1, SEEK_CUR);tmp = fgetc(pf);printf("%c\n", tmp);fseek(pf, -1, SEEK_CUR);tmp = fgetc(pf);printf("%c\n", tmp);//與起始位置的偏移量int num = ftell(pf);printf("%d\n",num);return 0;}
}

在這里插入圖片描述

rewind

在這里插入圖片描述

  • rewind介紹

void rewind ( FILE * stream );

讓文件指針的位置回到文件的起始位置

int main(void)
{FILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}else{char tmp;tmp = fgetc(pf);printf("%c\n",tmp);tmp = fgetc(pf);printf("%c\n", tmp);fseek(pf, -1, SEEK_CUR);tmp = fgetc(pf);printf("%c\n", tmp);fseek(pf, -1, SEEK_CUR);tmp = fgetc(pf);printf("%c\n", tmp);//與起始位置的偏移量int num = ftell(pf);printf("%d\n",num);//回到起始位置rewind(pf);tmp = fgetc(pf);printf("%c\n", tmp);return 0;}
}

在這里插入圖片描述

文件結束判斷

  • feof介紹

在這里插入圖片描述

int feof ( FILE * stream );

文件讀取結束的判斷:

  • 在文件讀取過程中,不能使用feof函數的返回值直接來判斷文件是否結束

feof——應用于當文件讀取結束的時候,判斷是讀取失敗還是遇到文件尾結束

1.文本文件讀取結束,判斷返回值是否為EOF(fgetc),或者NULL(fgets),fgetc判斷是否為EOF,fgets判斷返回值是否為NULL.
2.二進制文件讀取結束判斷,判斷返回值是否小于實際要讀的個數,fread判斷返回值是否小于實際要讀的個數

文件讀取結束之后,需要判斷讀取結束的原因:
feof——返回真,說明是文件正常讀取遇到了結束標志而結束的

ferror——返回真,說明是文件在讀取過程中出錯而結束的(外部原因)

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

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

相關文章

【區分vue2和vue3下的elementUI和elementUI Plus的button組件,介紹如何安裝,屬性,事件,方法等以及使用案例】

區分vue2下的Element UI和vue3下的Element Plus的Button組件 Element UI (vue2) Button組件&#xff1a;基于Vue 2的Element UI庫中的Button組件提供了多種樣式和類型&#xff0c;如默認、主要、成功、警告、危險等。 Element Plus (vue3) Button組件&#xff1a;作為Element …

匯編原理(二)寄存器——內存訪問

一個字 兩個字節 雙字 字節為8位 字為16位&#xff08;看兩格&#xff09; 雙子dword32位&#xff08;看四格&#xff09; 內存中字的存儲&#xff1a; 0地址單元中存放的字節型數據是多少&#xff1f; 0地址字單元中存放的字型數據是多少&#xff1f; 2地址字單元中存放…

Secure Operation

文章目錄 Secure Summation OperationSecure Set Union Operation Secure Summation Operation 讓我們通過一個具體的例子來說明這個算法。 假設有三個數據擁有者 S1, S2 和 S3&#xff0c;他們分別持有以下值&#xff1a; S1 持有 value1 10S2 持有 value2 20S3 持有 val…

基坑氣膜:建筑工地環保新利器—輕空間

隨著城市化進程的加快&#xff0c;建筑行業的飛速發展帶來了嚴重的環境問題&#xff0c;如噪音和粉塵污染&#xff0c;給人們的生活帶來諸多不便。為了解決這些問題&#xff0c;建筑行業一直在探索更為環保和高效的施工方式。近年來&#xff0c;基坑氣膜技術逐漸嶄露頭角&#…

Audition 2024 for Mac/Win:音頻錄制與編輯的卓越之選

隨著數字媒體的不斷發展&#xff0c;音頻內容創作已經成為各行各業中不可或缺的一部分。無論是音樂制作、廣播節目、播客錄制還是影視配音&#xff0c;都需要高品質的音頻錄制和編輯工具來實現專業水準的作品。在這個充滿競爭的時代&#xff0c;要想在音頻創作領域脫穎而出&…

解線性方程組——最速下降法及圖形化表示 | 北太天元 or matlab

一、思路轉變 A為對稱正定矩陣&#xff0c; A x b Ax b Axb 求解向量 x x x這個問題可以轉化為一個求 f ( x ) f(x) f(x)極小值點的問題&#xff0c;為什么可以這樣&#xff1a; f ( x ) 1 2 x T A x ? x T b c f(x) \frac{1}{2}x^TAx - x^Tb c f(x)21?xTAx?xTbc 可…

ZooKeeper安裝

安裝Zookeeper 1、下載Zookeeper安裝包 打開鏈接選擇一個版本進行下載 https://zookeeper.apache.org/releases.html2、上傳Zookeeper安裝包到集群 輸入命令 scp apache-zookeeper-3.8.4-bin.tar.gz hadoop192.168.88.100:/tmp也可以使用xftp等上傳&#xff0c;物理機用u盤…

Python 網格變換之平移、旋轉、縮放、變換矩陣

網格變換 一、平移1.1、代碼示例1.2、結果示例二、旋轉2.1、代碼示例2.2、結果示例三、縮放3.1、代碼示例3.2、結果示例四、變換矩陣4.1、代碼示例4.2、結果示例一、平移 網格平移:將網格沿著特定的方向移動一段距離。 1.1、代碼示例

Android實現無線連接ADB調試

無線連接ADB(Android Debug Bridge)進行調試,是一種方便的遠程調試方式,尤其適合在沒有USB線或者設備物理接觸不便的情況下使用。下面是如何設置無線ADB調試的步驟: 1. 準備工作 確保你的電腦和Android設備連接在同一局域網(Wi-Fi)下。 2. 在Android設備上操作 允許…

hadoop其中一個節點壞了,用其他節點克隆的教程+datanode正常顯示,但master只有1個livenodes

如果一個slave出了非常棘手的問題&#xff0c;還是用其他slave克隆吧&#xff0c;很快的。 克隆教程&#xff1a; 1.克隆后只需要&#xff1a;sudo gedit /etc/network/interfaces&#xff0c;把ip地址改好。 2.ssh不需要重新設置&#xff0c;其他東西也都不需要重新進行設置…

linux日常運維2

下載linux離線安裝包---- 利用 Downloadonly 插件下載 RPM 軟件包及其所有依賴包 1. 先找個可以上網的linux操作系統&#xff0c;這里是以centos7操作系統為例&#xff0c;如果要使用centos6就先安裝一個centos6的系統&#xff0c;然后讓他可以上網&#xff0c;后面步驟如下 a.…

《精通Stable Diffusion AI繪畫:基礎技巧、實戰案例與海量資源一站式學習》

隨著人工智能技術的迅猛發展&#xff0c;AI繪畫已經成為了一個炙手可熱的話題。特別是在設計、藝術和創意領域&#xff0c;AI繪畫工具的出現無疑為創作者們帶來了更多的可能性和便利。《Stable Diffusion AI繪畫從提示詞到模型出圖》這本書&#xff0c;就是一本深入解析Stable …

打包遷移Python env環境

打包遷移Python env環境 平常工作中可能遇到python虛擬環境遷移的場景&#xff0c;總結了如下幾個方法。適用于同架構、相同類型系統之間的python虛擬環境遷移。 方法一&#xff1a;使用pip freeze和requirements.txt 這種方法將當前環境中的所有包記錄到一個文件中&#xff0c…

恢復視頻3個攻略:從不同情況下的恢復方法到實踐!

隨著科技的進步&#xff0c;我們的生活被各種各樣的數字內容所包圍&#xff0c;其中&#xff0c;視頻因其獨特的記錄性質&#xff0c;承載著許多重要的資料。但不管是自媒體人還是普通人日常生活隨手一拍&#xff0c;都會遇到誤刪視頻的情況。為了幫助您找回手機視頻&#xff0…

從零學爬蟲:使用比如說說解析網頁結構

新書上架~&#x1f447;全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目錄 一、引言 二、網頁結構概述 示例&#xff1a;查看網頁結構 三、使用比如說說解析網頁 1.…

windows10更改文件默認打開軟件

&#x1f4da;博客主頁&#xff1a;knighthood2001 ?公眾號&#xff1a;認知up吧 &#xff08;目前正在帶領大家一起提升認知&#xff0c;感興趣可以來圍觀一下&#xff09; &#x1f383;知識星球&#xff1a;【認知up吧|成長|副業】介紹 ??感謝大家點贊&#x1f44d;&…

使用ollama + webui+docker 運行任意大模型

&#x1f3e1; Home | Open WebUI 如果您的計算機上有 Ollama&#xff0c;請使用以下命令&#xff1a; docker run -d -p 3000:8080 --add-hosthost.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/o…

【Vue】跨域問題解決

Vue列文章目錄 【Vue】數據監測原理 【Vue】生命周期 【Vue】組件化編程 【Vue】組件用法 前言 … 目標 proxy代理的用法 #mermaid-svg-ZYJUqv8HPXLA3ecR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ZYJUqv8HPX…

紐曼硬盤隱藏文件丟失怎么恢復?介紹幾種有效的方法

紐曼硬盤作為存儲設備中的佼佼者&#xff0c;以其高性能和穩定性受到了廣大用戶的青睞。然而&#xff0c;在使用過程中&#xff0c;有時我們可能會遇到一些意想不到的問題&#xff0c;比如隱藏文件的丟失。這對于依賴這些文件進行工作或生活的人來說無疑是一個巨大的困擾。那么…

清華大學 | 機器人實驗室 | 具身智能 | 科研實習生招聘

hi&#xff0c;我們實驗室招實習生啦。歡迎簡歷投遞~ 基本要求 1. 代碼能力強&#xff0c;有公司實習經驗者優先 2. 熟練掌握python語言、pytorch框架 3. 具備大模型調試或使用經歷&#xff0c;掌握提示詞編寫技巧 4. 具備nlp、transformer構建調試經驗 5. 了解機器人基礎…