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++ 了,你就是一个编程专家了!祝你成功!