欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c語言讀取行數(shù)的函數(shù),c++讀取行

用C語言讀出文件行數(shù)

#include?stdio.h

召陵ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

int?hangshu(char?file[])//輸入工程目錄下的文件名,或者其他目錄下絕對路徑名例如:c:\\1.txt;

{

char?c;

int?h=0;

FILE?*fp;

fp=fopen(file,"r");

if(fp==NULL)

return?-1;//表示文件打開錯誤

while((c=fgetc(fp))!=EOF)

{

if(c=='\n')

h++;

else

{

c=fgetc(fp);//這是處理最后一行可能沒有換行標(biāo)志,但是確文件結(jié)束。

if(c==EOF)

{

h++;

break;

}

}

}

return?h;

}

int?main()

{

int?hs=hangshu("c:\\1.txt");//這里說明你要打開的文件。這個是c盤根目錄下文件

int?hst=hangshu("1.txt");//工程目錄下的文件。

printf("行數(shù):%d\n",hs);

printf("行數(shù):%d\n",hs);

}

如上是用c編寫的,不是c++.

運行的時候可以把中文注釋去掉。

完全可以運行的,我已經(jīng)測試過了。

C語言怎么做到從文件中讀取一行數(shù)據(jù),然后改變這一行內(nèi)容

1、用fgets函數(shù)可以讀取文件中某行的數(shù)據(jù),某列數(shù)據(jù)就必須一個一個讀入每行的第幾個字符,再存入到一個字符串當(dāng)中。

2、例程:

#includestdio.h

#includestring.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)){????//讀入每行數(shù)據(jù)

i--;

if(i==0)?strcpy(a,c);????//讀到第三行數(shù)據(jù)

b[k++]=c[j-1];????????//把每行的那列字符拷到b中

}

b[k]=0;

printf("第%d行數(shù)據(jù):%s\n",i,a);

printf("第%d列數(shù)據(jù):%s\n",j,b);

fclose(fp);

}

用c語言怎么讀取txt文件中的行數(shù)

讀取文件行數(shù), 可以逐個字符讀取文件,到文件尾,統(tǒng)計\n的個數(shù)

參考代碼如下

#include?stdio.h

int?main()

{

int?c;

FILE?*fp;

int?lines=0;

fp=fopen("in.txt",?"rb");

if(fp)

{

while((c=fgetc(fp))?!=?EOF)

if(c=='\n')?lines++;

printf("%d\n",lines);

fclose(fp);

}

return?0;

}

也可以通過fgets函數(shù),每次讀取一行,到文件尾,然后計算讀取的次數(shù)

#include?stdio.h

#include?string.h

int?main()

{

char?s[100];

FILE?*fp;

int?lines=0;

fp=fopen("in.txt",?"r");

if(fp)

{

while((fgets(s,100,fp))?!=?NULL)

if(s[strlen(s)-1]=='\n')?lines++;

printf("%d\n",lines);

fclose(fp);

}

return?0;

}

c語言問題(想要讀取文件的行數(shù))

代碼中有兩個問題:

(1)while(){}語法問題。

while(條件)/////這后面不能加分號,加分號后將做空循環(huán),循環(huán)里不會執(zhí)行循環(huán)體的代碼

{

循環(huán)體;

}

把while()后面的分號";"去掉就好。

(2)while里面的條件(c=fgetc(fp) !=EOF) 有問題。按照C語言運算符的優(yōu)先級將按以下順序執(zhí)行這個while循環(huán)里面的語句:

1) 讀取文件: fgetc(fp)

2) 將讀取文件的結(jié)果與EOF比較: fgetc(fp) !=EOF

3) 將比較的結(jié)果賦值給c,就是說c每次得到的不是true(1)就是false(0),根本不是你想要的結(jié)果

這個表達(dá)式其實是:while (c = (fgetc(fp) != EOF) )

正確的寫法是:while ( (c = fgetc(fp)) != EOF)

所以最后的代碼修改如下:

#includestdio.h

main()

{

FILE *fp;

char name[100],c;

int i;

int count = 0;//計算文件中字符個數(shù),從而判斷是否為空文件

i=0;//這邊為什么初始化為1?如果輸入的是空文件那么應(yīng)該就是0行

printf("enter filename:");

gets(name);

fp=fopen( name ,"r");

if (fp != NULL)

while ( (c=fgetc(fp)) != EOF )

{

count ++;

if(c == '\n')

i++;

}

if(i == 0 count 0) i ++; //如果沒有'\n'但是文件非空,那么該文件只有一行

printf("number of numbers:%d\n",i);

}

當(dāng)然,僅僅判斷'\n'并不保險,并不是所有系統(tǒng)下面的換行都有'\n',比如dos系統(tǒng)是"\r\n", linux系統(tǒng)一般用'\n',蘋果系統(tǒng)用的是'\r',如果是蘋果系統(tǒng)這種做法就失效了。

C語言讀取指定行數(shù)據(jù)

很遺憾,事實上計算機是不可能做到讀取txt文件的第n行的時間復(fù)雜度為O(1)的。

因為txt文件是“順序存儲”,如圖參考自《數(shù)據(jù)結(jié)構(gòu)》

要讀取第n行,必須找到第n-1行 = 則必須找到n-2行 … 必須找到第1行。所以讀取第5000行的字符串,只能一行一行找,就好比人類看書,要看到第5000段( txt的第5000行 其實打印出來是第5000段)必須一段一段數(shù),不然只能估計,就不準(zhǔn)確了。

如果要以O(shè)(1)時間復(fù)雜度定位到第N“行”或第N個記錄,必須用“索引存儲”、“散列存儲”等,如數(shù)據(jù)庫文件會用這類存儲。具體細(xì)節(jié)可以學(xué)《數(shù)據(jù)結(jié)構(gòu)》、《數(shù)據(jù)庫原理》等。

參考代碼:

#include?stdio.h?

//讀取filename文件(路徑)、第?whichLine+1?行文本。

char?*?ReadSpeacialLine(char?*filename,?int?whichLine)

{

FILE?*fp;???????

int?currentLine?=?0; //當(dāng)前讀取的行

char?strLine[1024]; //每行最大讀取的字符數(shù),可根據(jù)實際情況擴(kuò)大

if?((fp?=?fopen(filename,?"r"))?==?NULL)?//判斷文件是否存在及可讀

{

printf("error!");

return?NULL;

}

while?(!feof(fp))

{

if?(currentLine?==?whichLine)

{

fgets(strLine,?1024,?fp);??//讀取一行

//printf("%s",?strLine);?//輸出

return?strLine;

}

fgets(strLine,?1024,?fp);??//讀取一行,并定位到下一行

currentLine++;

}

fclose(fp);?????????????????????//關(guān)閉文件

return?NULL;

}

int?main()?{

//注意?源代碼里字符串寫"\\",編譯之后只是1個\,因為\是轉(zhuǎn)義符號

char?txtFile[]?=?"E:\\新建文本文檔.txt";

int?i?=?11;

printf("第%d行\(zhòng)n%s",?i+1

,?ReadSpeacialLine(txtFile,?i)); //ReadSpeacialLine返回的字符串里自帶換行

getchar(); //防止結(jié)束閃退

return?0;

}

網(wǎng)站標(biāo)題:c語言讀取行數(shù)的函數(shù),c++讀取行
網(wǎng)頁鏈接:http://chinadenli.net/article30/dsgoepo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作網(wǎng)站設(shè)計公司用戶體驗電子商務(wù)外貿(mào)網(wǎng)站建設(shè)做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)