c語言文件的文本怎麼讀取

根據你給的文件保存的數據的格式,我猜測每一行是一個學生的信息,格式如下:

序號 姓名 成績1 成績2 成績3 ...

知道了題意和題目要求,那麼一切將會變得簡單起來,請看代碼

#include<stdio.h>

#defineREAD_FILE"data.txt"/*要讀取的文件的名字*/
#defineWRITE_FILE"T_data.txt"/*要寫入的文件的名字*/
#defineSTU_NUM10/*最大學生人數*/
#defineMAX_LEN50/*一行的最大字元數*/
/*
*獲取總分函數
*/
intget_sum(charconst*msg){

intsum=0;
inttmp;
/*
*遍歷一行字元
*/
while(*msg!=''){

/*
*以空格為一項成績的分隔標志
*/
tmp=0;
while(*msg!=''&&*msg!=''){
/*
*char類型數字轉int類型數字
*/
tmp=(tmp*10)+((*msg)-'0');
msg++;
}
/*
*求總和
*/
sum+=tmp;
if(*msg==''){

break;
}
msg++;
}
returnsum;
}

intmain(void){

FILE*rfp,*wfp;/*聲明讀取/寫入文件指針*/
charstudent[STU_NUM][MAX_LEN];/*存放讀取到的數據緩存數組*/
charch;
intsum[STU_NUM];/*成績總和*/
inti=0;
intj=0;
intk=0;
rfp=fopen(READ_FILE,"r");/*打開數據文件*/
if(rfp==NULL){

perror(READ_FILE);
exit(1);
}
for(i=0;i<STU_NUM;i++){

sum[i]=0;
}
/*
*逐個字元讀取文件的內容,
*直至遇到文件結束符為止。
*/
i=0;
while((ch=fgetc(rfp))!=EOF){
/*
*遇到換行符表示已經讀取完一個學生的資料;
*否則繼續將數據寫入緩存數組中。
*/
if(ch==' '){

student[i][j]='';
j=0;
i+=1;
}else{

student[i][j++]=ch;
}
}
student[i][j]='';
wfp=fopen(WRITE_FILE,"w");
/*
*開始分析數據
*根據文件存放數據的格式,從下標為2的位置開始分析數據。
*當遇到空格時證明後面的數據是成績,每一科成績分數均以空格分開。
*printf是顯示出來。
*fprintf是寫入另一個文件。
*/
for(j=0;j<=i;j++){

k=2;
printf("%c%c",student[j][0],student[j][1]);
fprintf(wfp,"%c%c",student[j][0],student[j][1]);
while(student[j][k]!=''){

printf("%c",student[j][k]);
fprintf(wfp,"%c",student[j][k]);
k++;
}
printf("'ssumofscoresumis");
fprintf(wfp,"'ssumofscoresumis");
sum[j]=get_sum(&student[j][k]);
printf("%d ",sum[j]);
fprintf(wfp,"%d ",sum[j]);
}
/*
*記得關閉文件哦。
*/
fclose(rfp);
fclose(wfp);
return0;
}

以下是運行結果:

這個程序僅僅是針對你的題目要求來的,文件存放的數據格式不能更改,否則會出錯。每一行必須以回車鍵結束,最後一行的最後一個字元之後什麼也不能有。我盡量以你看得懂的方法來寫,關鍵部分都帶有注釋,有問題不要追問了,自己多思考思考,實在解決不來還是很歡迎可以追問的哦,哈哈哈!!!

Ⅱ c語言怎樣按行讀取

區分讀取的源,有如下兩種情況:

1 從標准輸入讀取,即stdin。
可以使用gets函數:
char * gets(char *str);
該函數會從標准版輸入中讀取權一行數據,直到讀到\n,並將\n替換為字元串結束符\0,讀取到的數據以字元串形式存於str中。
需要注意的是,使用gets函數時,需要確保str指向空間大小,必須超過任意一行的長度,否則會出現越界操作。有些編譯器會報gets是不安全的,就是這個原因。

2 從文件讀取。
對於一個被打開的文件,如果其是可讀的,那麼可以通過fgets函數實現按行讀取。
char *fgets(char *buf, int bufsize, FILE *fp);
功能與gets類似,只是源不同。fgets從fp中讀一行數據存到buf中,同時會判斷bufsize,如果一行數據的長度超過了bufsize,那麼只讀入bufsize長度的數據,確保不會溢出。否則讀取整行。
由於在C語言中,標准輸入stdin也是以文件指針形式存在的,所以gets可以用
fgets(str, bufsize, stdin);
替代,這樣代碼量稍多一些,但可以更安全。

Ⅲ c語言,%怎麼讀

%是一個運算符,用於求兩個數相除的余數,有時候又稱為求模運算符。


5%5的余數結果為0.


Ⅳ C語言代碼怎樣閱讀

依次輸出:3,1,-1

這是個do while循環,先執行do裡面的,此時i=5,5餘2等於1,1不滿足switch條件的case,直接回執行i-=2;此時i還是5,所以輸出答3,3滿足while(i>0),又執行,do裡面的,之後就可以自己算了。

Ⅳ C語言如何讀

命令當英語讀,符號就按中文的讀

Ⅵ 如何學習C語言

藉此希望對初學者有點幫助:
一、分號,大括弧
分號。分號是表達式結束的標志,一般表達式後面都要有。
寫「;」的時候一定要注意:是否要結束前面的語句
。注意:if,switch,for,while語句,數據類型定義,函數定義。
if(a>b)
/*if語句,沒有分號*/
{...}
while(i+=10,i!=100);
/*while語句循環體為空,依靠逗號語句實現循環*/
struct
a
/*結構體數據定義,沒有分號*/
{...}b;
/*結構體變數,要有分號*/
int
sum(...)
/*函數定義,沒有分號*/
{....}
大括弧。大括弧是一個語句段的標志。
寫大括弧時最好一次寫一對,然後把游標移到大括弧里寫
。避免遺漏。
二、運算符號
「=」與「==」
「=」用於賦值,注意「=」左邊必須是變數,右邊可以是常量也可以是變數。「==」用於判斷兩個量的大小,左右兩邊可以是常量也可以是變數(
盡量把常量寫在左邊,這樣「==」誤寫成「=」時編譯器就會報錯
)。
運算表達式有它本身的值
。「=」語句值為「=」右邊的量的大小;「==」語句值為判斷結果,無外乎兩種,0(表示「==」兩邊不等)1(「==」兩邊相等)。
(i=1)==(3==4);
/*i值為1,整個表達式值為0*/
「,」
逗號語句是從左到右計算,整個逗號語句的值為最後一個語句的值
i=(j=2,j+8,j++);
/*先計算j=2,值為2,j+8不是運算表達式,跳過,計算j++得到整個括弧內的值3*/
「/」
「/」兩邊都是整型變數的時候結果也是整型,而且結果遵循向0靠攏的原則

運算符的優先順序及結合方向
不多說了,表格一定要背牢。
三、變數
命名
不要吝惜,能說明白性質盡量在變數的名字上說明。
避免老是使用一個字母,或者難以理解的變數名
。對於較長的變數命名可以使用宏定義、類型定義。
#deine
UP
0x4800
/*鍵碼的宏定義*/
typedef
struct
{....}MEM;
/*結構體變數的類型定義*/

Ⅶ "&"在C語言中怎麼念讀音可用漢字表示

仿英文讀音(amp.),念"安泊」。
仿英文意思 (and),念"安德」。

安C語言意思:

s=&k -- 求k的地址,賦值給s

A = x & 0x40 -- 這里的安泊是「按位與」「按位乘」的運算符,讀「按位與」或「按位乘」

if ( (a==b) && (c > d) ) -- 邏輯運算符 &&, 兩個安泊,讀成一個「與」或 「與運算」

Ⅷ 如何讀好C語言,C++

C 語言、C++ 語言等是練會的!你除了看書之外,還要多上機練習編程和調試,比如說將書上的練習題輸入到電腦中,在 VC 環境中去編譯、調試程序,時間長了,你就積累出豐富的編程經驗了,到那時你就不只是讀好 C 語言、C++ 了,你就是一個編程專家了!祝你成功!