導航:首頁 > 文件類型 > clinux文件讀寫

clinux文件讀寫

發布時間:2023-06-19 06:36:29

① 我要用c編寫程序讀寫磁碟,在linux中磁碟為文件,怎樣用c語言獲取磁碟的文件描述符,然後對磁碟進行讀寫

linux下面的概念是一切皆文件。所以沒有像c盤d盤這樣的東西,有的只是各種各樣的文件專夾和文件。要讀屬一個linux下面的文件很簡單,命令pwd可以得到當前路徑,然後路徑接上你打開的文件名就可以知道這個文件的詳細路徑了。直接open就可以了。

② linux下c語言 讀取文件內容

沒測試過,不過問題應該是fgetc這里
fgetc獲取到第一個字元,比如第一行的'#'號,然後fgets獲取到後面的字元,列印版當然就沒有權第一個字元了,解決方式要麼只用fgets,要麼把fgetc獲取的字元也列印出來

③ linux系統下,文件存儲與數據讀寫問題(C語言)。

如果是X86的操作系統,直接用整個結構體做memcpy就可以了,如果要考慮位元組對齊的問題可以嘗試這樣編碼,
PS:沒有調試過,僅僅提供思路哦
#include <stdio.h>
#include <string.h>

typedef struct User
{
int ID;
char Name[20];
int Score;
}tUser;

tUser stUser[4] = {
{1, "a", 60},
{2, "b", 70},
{3, "c", 80},
{4, "d", 90}
};

void MyWrite (int fd, tUser *pstUser, int iMemNum)
{
int i = 0, iLen = 0;
char szBuf[1024] = {0};

/*清空緩沖區*/
memset(szBuf, 0, 1024);

/*構造結構體存儲字元串*/
for (i = 0; i < iMemNum; i++) {
memcpy(szBuf+iLen, pstUser.ID, sizeof(int));
iLen += sizeof(int);
memcpy(szBuf+iLen, pstUser.Name, sizeof(char)*20);
iLen += sizeof(char)*20;
memcpy(szBuf+iLen, pstUser.Score, sizeof(int));
iLen += sizeof(int);

pstUser++;
}

//將szBuf的內容寫入fd 文件
}

void MyRead (int fd, tUser *pstUser)
{
int i = 0, iLen = 0, iStructSize = sizeof(int) + sizeof(char)*20 +sizeof(int);
char szBuf[1024] = {0};
char szTemBuf[32] = {0};

/*清空緩沖區*/
memset(szBuf, 0, 1024);

//從fd 文件中讀出內容到szBuf

iLen = strlen(szBuf);
i = 0;

/*構造結構體*/
while (iLen >= iStructSize) {

memcpy(szTemBuf, szBuf+i, sizeof(int));
szTemBuf[sizeof(int)] = 0;
pstUser.ID = atoi(szTemBuf);
i += sizeof(int);

memcpy(szTemBuf, szBuf+i, sizeof(char)*20);
szTemBuf[sizeof(char)*20] = 0;
strncpy(pstUser.Name, szTemBuf, 20);
i += sizeof(char)*20;

memcpy(szTemBuf, szBuf+i, sizeof(int));
szTemBuf[sizeof(int)] = 0;
pstUser.Score = atoi(szTemBuf);
i += sizeof(int);

iLen -= iStructSize;
pstUser++;
}

}

void MyFindByID(tUser *pstUser, int iMemNum, int iId)
{
int i = 0;

for (i = 0; i < iMemNum; i++) {
if (pstUser.ID == iId) {
printf("=============================\r\n");
printf("ID\t:%d\r\n", pstUser.ID);
printf("Name\t:%s\r\n", pstUser.Name);
printf("Score\t:%d\r\n", pstUser.Score);
printf("=============================\r\n");

return ;
}

pstUser++;
}
}

int main ()
{
FILE *file;
tUser stTmpUser[4];

file = fopen(path, "a");
if (file == NULL)
{
return -1;
}

MyWrite(file, &stUser[0], 4);
fclose(file);

file = fopen(path, "r");
if (file == NULL)
{
return -1;
}

MyRead(file, &stTmpUser[0]);
fclose(file);

MyFindByID(&stTmpUser[0], 4, 2);
return 0;
}

④ linux怎麼c語言讀取普通文件內容

1、用fgets函數復可以讀取文件中某制行的數據,某列數據就必須一個一個讀入每行的第幾個字元,再存入到一個字元串當中。
2、常式:
#include<stdio.h>
#include<string.h>
void main()
{
char a[100],b[100],c[100];
int i=3,j=4,k=0; //第三行,第四列
FILE *fp = fopen("data.txt","r");
while(fgets(c,100,fp)){ //讀入每行數據
i--;
if(i==0) strcpy(a,c); //讀到第三行數據
b[k++]=c[j-1]; //把每行的那列字元拷到b中
}
b[k]=0;
printf("第%d行數據:%s\n",i,a);
printf("第%d列數據:%s\n",j,b);
fclose(fp);

⑤ Linux C 緩沖文件和非緩沖文件讀寫方式用法

1.用write, read, open等系統調用編寫分別實現如下功能的程序(要求進行必要的出錯檢查版):
(1)創建一個權文件testfile.txt,文件內容從鍵盤輸入;
(2)將testfile.txt的內容顯示在屏幕上,並將testfile.txt的內容復制到一個新的文件file2.txt中。
實驗代碼
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main()

⑥ linux下如何用C程序讀寫本地文件

是一樣來的。如果是同目自錄則直接寫文件名,如果是不同的目錄,可以寫明路徑。

如:
讀同目錄文件local.txt
fopen("local.txt","r");

讀不同目錄文件 /home/yourname/otherdir/other.txt
fopen("/home/yourname/otherdir/other.txt","r");

你可以使用pwd命令來獲得文件路徑

⑦ Linux編程,怎樣用C語言創建、讀、寫文件呀希望各位賜教!謝謝

既然得到了這文件指針,你想怎麼打開都行,無需知道以前是什麼模式。
用open更新你想要的打開方式。
o_rdonly
以只讀方式打開文件
o_wronly
以只寫方式打開文件
o_rdwr
以可讀寫方式打開文件。上述三種旗標是互斥的,
也就是不可同時使用,
但可與下列的旗標利用or(|)運算符組合。
o_creat
若欲打開的文件不存在則自動建立該文件。
o_excl
如果o_creat
也被設置,
此指令會去檢查文件是否存在。文件若不存在則建立該文件,
否則將導致打開文件錯誤。此外,
若o_creat與o_excl同時設置,
並且欲打開的文件為符號連接,
則會打開文件失敗。
o_noctty
如果欲打開的文件為終端機設備時,
則不會將該終端機當成進程式控制制終端機。
o_trunc
若文件存在並且以可寫的方式打開時,
此旗標會令文件長度清為0,
而原來存於該文件的資料也會消失。
o_append
當讀寫文件時會從文件尾開始移動,
也就是所寫入的數據會以附加的方式加入到文件後面。
o_nonblock
以不可阻斷的方式打開文件,
也就是無論有無數據讀取或等待,
都會立即返回進程之中。
o_ndelay
同o_nonblock。
o_sync
以同步的方式打開文件。
o_nofollow
如果參數pathname
所指的文件為一符號連接,
則會令打開文件失敗。
o_directory
如果參數pathname
所指的文件並非為一目錄,
則會令打開文件失敗。
這是你要的
r
打開只讀文件,
該文件必須存在。
r+
打開可讀寫的文件,
該文件必須存在。
w
打開只寫文件,
若文件存在則文件長度清為0,
即該文件內容會消失。若文件不存在則建立該文件。
w+
打開可讀寫文件,
若文件存在則文件長度清為零,
即該文件內容會消失。若文件不存在則建立該文件。
a
以附加的方式打開只寫文件。若文件不存在,
則會建立該文件,
如果文件存在,
寫入的數據會被加到文件尾,
即文件原先的內容會被保留。
a+
以附加方式打開可讀寫的文件。若文件不存在,
則會建立該文件,
如果文件存在,
寫入的數據會被加到文件尾後,
即文件原先的內容會被保留。

⑧ LINUX C語言寫一個讀寫文件的程序,讀取的話,要把文件內容顯示出來,寫的話,就是寫進文件裡面咯

#include<stdio.h>
#include<stdlib.h>

intmain()
{
FILE*pf=fopen("a.txt","r");
if(pf==NULL){
printf("opena.txtfilefailed! ");
exit(0);
}

FILE*pf2=fopen("b.txt","w");
if(pf2==NULL){
printf("openb.txtfilefailed! ");
fclose(pf);
exit(0);
}

charch;
while(!feof(pf)){
ch=fgetc(pf);
putchar(ch);
fputc(ch,pf2);
}

fclose(pf2);
fclose(pf);

return0;
}


⑨ linux系統如何讀寫屬性為c的文件

Linux把外部設備也當成文件來管理,這是繼承了Unix一切皆文件的設計思想。
/dev目錄內下的文件皆外部設備,所以你必須容有相應的內核模塊來驅動相應的設備,否則此設備無法讀寫。
你是在測試COM口么?COM口有沒有連接測試設備?沒有的話,就算有相應的內核模塊也是白搭的,就象光有電燈開關,沒安裝燈泡,你怎麼按開關都白搭。

⑩ Linux編程,怎樣用C語言創建、讀、寫文件呀希望各位賜教!謝謝

樓上正解,提供一小抄例子如下,另外,linux 下C讀寫文件函數有兩種,一個是系統的,還有一個是C函數庫的記得,好像是系統的文件句柄(file id)比較簡單,然後函數庫的那個提供了一個結構體,具體的記不請了....好長時間沒寫...

#include <stdio.h>
#include <fcntl.h>

int main(int argc, char **argv)
{
int fid;
char buff[4096];

fid = open(argv[1],O_WRONLY);
if (fid==-1)
{
perror(argv[1]);
exit(1);
}

while (fgets(buff,4096,stdin)!=NULL)
{
write(fid,buff,strlen(buff));
}

close(fid);
}

閱讀全文

與clinux文件讀寫相關的資料

熱點內容
dede工具 瀏覽:507
5g網盟app怎麼下載 瀏覽:486
微信備份老是連接中斷 瀏覽:886
出台多少份文件 瀏覽:380
鞋子怎麼搭配衣服的app 瀏覽:755
文件名使用的通配符的符號是什麼 瀏覽:916
lol分卷文件損壞怎麼辦 瀏覽:276
6分管車螺紋怎麼編程 瀏覽:732
海口農商銀行信用卡app是什麼 瀏覽:770
win10任務欄文件夾我的電腦 瀏覽:14
安卓nba2k18 瀏覽:776
文件夾密碼怎麼修改密碼 瀏覽:271
蘋果數據中心用什麼伺服器 瀏覽:769
省內圓通快遞寄文件夾需要多少錢 瀏覽:740
iphone程序加密 瀏覽:884
win10文件夾調整文件行高 瀏覽:681
創意手繪教程 瀏覽:754
微信刪除帳號信息 瀏覽:596
mysql操作類文件 瀏覽:649
繞過xp密碼 瀏覽:158

友情鏈接