轉(zhuǎn)換干啥,直接寫個(gè)讀取函數(shù)就好了啊、大概就下面這意思。
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)芙蓉免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
int Read(int r, int c)
{
return arr[r][c];
}
int ReadAsTransposition(int r, int c)
{
return arr[c][r];
}
就是,實(shí)參是主函數(shù)調(diào)用函數(shù)的時(shí)候傳進(jìn)去的那個(gè),形參就是在被調(diào)用函數(shù)中的,代表那個(gè)實(shí)參的值。#includeint fun(int n){ return n+2;}int main(){ int a; a=1; int b; b=fun(a);}a就是實(shí)參,函數(shù)中的 int n 就是形參。形參出現(xiàn)在函數(shù)定義中,在整個(gè)函數(shù)體內(nèi)都可以使用, 離開該函數(shù)則不能使用。實(shí)參出現(xiàn)在主調(diào)函數(shù)中,進(jìn)入被調(diào)函數(shù)后,實(shí)參變量也不能使用。 形參和實(shí)參的功能是作數(shù)據(jù)傳送。發(fā)生函數(shù)調(diào)用時(shí), 主調(diào)函數(shù)把實(shí)參的值傳送給被調(diào)函數(shù)的形參從而實(shí)現(xiàn)主調(diào)函數(shù)向被調(diào)函數(shù)的數(shù)據(jù)傳送。1.形參變量只有在被調(diào)用時(shí)才分配內(nèi)存單元,在調(diào)用結(jié)束時(shí), 即刻釋放所分配的內(nèi)存單元。因此,形參只有在函數(shù)內(nèi)部有效。 函數(shù)調(diào)用結(jié)束返回主調(diào)函數(shù)后則不能再使用該形參變量。 2.實(shí)參可以是常量、變量、表達(dá)式、函數(shù)等, 無論實(shí)參是何種類型的量,在進(jìn)行函數(shù)調(diào)用時(shí),它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應(yīng)預(yù)先用賦值,輸入等辦法使實(shí)參獲得確定值。 3.實(shí)參和形參在數(shù)量上,類型上,順序上應(yīng)嚴(yán)格一致, 否則會(huì)發(fā)生“類型不匹配”的錯(cuò)誤。 4.函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。 即只能把實(shí)參的值傳送給形參,而不能把形參的值反向地傳送給實(shí)參。 因此在函數(shù)調(diào)用過程中,形參的值發(fā)生改變,而實(shí)參中的值不會(huì)變化。
1、用fgets函數(shù)可以讀取文件中某行的數(shù)據(jù),某列數(shù)據(jù)就必須一個(gè)一個(gè)讀入每行的第幾個(gè)字符,再存入到一個(gè)字符串當(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);
}
很遺憾,事實(shí)上計(jì)算機(jī)是不可能做到讀取txt文件的第n行的時(shí)間復(fù)雜度為O(1)的。
因?yàn)閠xt文件是“順序存儲(chǔ)”,如圖參考自《數(shù)據(jù)結(jié)構(gòu)》
要讀取第n行,必須找到第n-1行 = 則必須找到n-2行 … 必須找到第1行。所以讀取第5000行的字符串,只能一行一行找,就好比人類看書,要看到第5000段( txt的第5000行 其實(shí)打印出來是第5000段)必須一段一段數(shù),不然只能估計(jì),就不準(zhǔn)確了。
如果要以O(shè)(1)時(shí)間復(fù)雜度定位到第N“行”或第N個(gè)記錄,必須用“索引存儲(chǔ)”、“散列存儲(chǔ)”等,如數(shù)據(jù)庫文件會(huì)用這類存儲(chǔ)。具體細(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ù)實(shí)際情況擴(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個(gè)\,因?yàn)閈是轉(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;
}