C语言怎样将文本文件中的内容读取打印

作者&投稿:邬质 (若有异议请与网页底部的电邮联系)
怎么用C语言读取 TXT文件中的字符串~

可以使用输入输出重定向来将TXT文本中的字符内容导入程序中,或者使用标准C库函数:fopen()和fgetc();先使用fopen()函数打开TXT文本文件,然后使用fgetc读取文本文件中的字符。读取全部文本中全部字符可以使用一个while循环加判断是否读取到文件结尾来实现:char ch;while((ch= fgetc(fp)) != EOF)这样当读取到文件结尾时,while循环就会终止。
C语文编写编译如下:
#include #include #include #define MAXLINE 100000#define BUFLEN 1024int main(){FILE *file;char buf[BUFLEN];int len=0,i=0;char *array[MAXLINE];file=fopen("test.txt","r");//打开TXST.TxT文件if(!file)return -1;while(fgets(buf,BUFLEN,file))//读取TXT中字符{ len=strlen(buf); array[i]=(char*)malloc(len+1); if(!array[i])break; strcpy(array[i++],buf);}fclose(file);i--;while(i>=0&&array[i]){ printf("%s
",array[i]);//打印test文档的字符 free(array[i--]);}}

根据你给的文件保存的数据的格式,我猜测每一行是一个学生的信息,格式如下:
序号 姓名 成绩1 成绩2 成绩3 ...
知道了题意和题目要求,那么一切将会变得简单起来,请看代码。
#include #define READ_FILE "data.txt" /* 要读取的文件的名字 */#define WRITE_FILE "T_data.txt" /* 要写入的文件的名字 */#define STU_NUM 10 /* 最大学生人数 */#define MAX_LEN 50 /* 一行的最大字符数 *//* * 获取总分函数 */int get_sum(char const *msg) {int sum = 0;int tmp;/* * 遍历一行字符 */while ( *msg != '\0' ) {/* * 以空格为一项成绩的分隔标志 */tmp = 0;while ( *msg != ' ' && *msg != '\0' ) {/* * char类型数字转int类型数字 */tmp = ( tmp * 10 ) + ( ( *msg ) - '0' );msg++;}/* * 求总和 */sum += tmp;if ( *msg == '\0' ) {break;}msg++;}return sum;}int main(void) {FILE *rfp, *wfp; /* 声明读取/写入文件指针 */char student[STU_NUM][MAX_LEN]; /* 存放读取到的数据缓存数组 */char ch; int sum[STU_NUM]; /* 成绩总和 */int i = 0;int j = 0;int k = 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] = '\0';j = 0;i += 1;} else {student[i][j++] = ch;}}student[i][j] = '\0';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("\'s sum of score sum is ");fprintf(wfp, "\'s sum of score sum is ");sum[j] = get_sum(&student[j][k]);printf("%d
", sum[j]);fprintf(wfp, "%d
", sum[j]);}/* * 记得关闭文件哦。 */fclose(rfp);fclose(wfp);return 0;}以下是运行结果:

这个程序仅仅是针对你的题目要求来的,文件存放的数据格式不能更改,否则会出错。每一行必须以回车键结束,最后一行的最后一个字符之后什么也不能有。我尽量以你看得懂的方法来写,关键部分都带有注释,有问题不要追问了,自己多思考思考,实在解决不来还是很欢迎可以追问的哦,哈哈哈!!!

可以参考下面的代码:

#include<stdio.h>

#define F_PATH "d:\\myfile\\file.dat"

char c;

int main(){

FILE*fp=NULL;//需要注意

fp=fopen(F_PATH,"r");

if(NULL==fp) return -1;//要返回错误代码

while(fscanf(fp,"%c",&c)!=EOF) printf("%c",c); //从文本中读入并在控制台打印出来

fclose(fp);

fp=NULL;//需要指向空,否则会指向原打开文件地址    

return 0;

}

扩展资料:

fopen函数是打开一个文件,其调用的一般形式为:

文件指针名=fopen(文件名,使用文件方式);

“文件指针名”必须是被声明为FILE 类型的指针变量;

“文件名”是被打开文件的文件名;

“使用文件方式”是指文件的类型和操作要求;

“文件名”是C风格字符串。

使用文件的方式共有12种,部分的意义如下:

"r" = "rt"

打开一个文本文件,文件必须存在,只允许读

"rb"

打开一个二进制文件,文件必须存在,只允许读

参考资料来源:百度百科-c语言fopen函数



#include <stdio.h>

int main() {
int byte;
FILE *infp;
char filename[60];
printf("文件名:");
scanf("%s",filename);
infp = fopen(filename,"rb");
if(infp == NULL) {
printf("无法打开文件:%s
",filename);
return 1; 
}
while((byte = fgetc(infp)) != EOF)
fputc(byte,stdout);
fputc('
',stdout);
fclose(infp);
return 0;
}


使用文件操作函数fopen,fscanf即可。

1.fopen的函数原型:FILE * fopen(const char * path,const char * mode);
  fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
  r 以只读方式打开文件,该文件必须存在。
  r+ 以可读写方式打开文件,该文件必须存在。
  rb+ 读写打开一个二进制文件,允许读数据。
  rw+ 读写打开一个文本文件,允许读和写。
  w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
  w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
  a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
  a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
  wb 只写打开或新建一个二进制文件;只允许写数据。
  wb+ 读写打开或建立一个二进制文件,允许读和写。
  wt+ 读写打开或着建立一个文本文件;允许读写。
  at+ 读写打开一个文本文件,允许读或在文本末追加数据。
  ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
  上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
    返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。

2.例程:

#include<stdio.h>
#define F_PATH "d:\\myfile\\file.dat"
char c;
int main(){
    FILE*fp=NULL;//需要注意
    fp=fopen(F_PATH,"r");
    if(NULL==fp) return -1;//要返回错误代码
    while(fscanf(fp,"%c",&c)!=EOF) printf("%c",c); //从文本中读入并在控制台打印出来
    fclose(fp);
    fp=NULL;//需要指向空,否则会指向原打开文件地址    
    return 0;
}


#include <stdio.h>
int main()
{
char c;
//文件输入
freopen( "a.txt", "r", stdin );
while ( scanf( "%c", &c )!=EOF )
printf( "%c", c );
return 0;
}
"我想把它作为程序的一部分、让程序更加清楚的"
不知道你这什么意思,如果你想更好的了解文件输入输出请看相关的书籍。


易语言如何将打开的文本文件的内容显示到编辑框内
.版本 2.子程序 _按钮1_被单击通用对话框1.过滤器 = “*.txt”通用对话框1.打开 ()编辑框1.内容 = 到文本 (读入文件 (通用对话框1.文件名))

如何利用c语言打开文本文件?
C程序语言非常强大,通过打开文本的函数(里面的参数指出要打开文本的位置及文件名),即可打开相应的文本。第一,包含的头文件:#include <stdio.h>,这是一个输入输出函数,第二,打开文本文件:FILE *file = fopen("c:\\\\1.txt","r");代表C盘的文件,文件名为1.txt,r表示以只读的方式打开,...

c语言程序设计如何将文本文件“in.txt”数学符号显示在屏幕上?_百度知 ...
程序1(显示in.txt):include<stdio.h> main(){ printf("in.txt");} 程序2(显示in.txt文件里面的内容):include<stdio.h> main(){ FILE *FP;char s[1024];fp=fopen("in.txt","r");while(!feof(fp)){ fgets(fp,s);printf("%s\\n",s);} fclose(fp);} ...

用c语言怎样将文本文件中的制表符换成等价的空格,使空格充满到下一个...
判断这个文件中的制表符,如果找到这个制表符,则替换成空格。需要用函数和算法实现,函数中判断制表符的位置,并根据需要替换成想要的符合即可。

在c语言编程中如何实现程序对文本文件中字符串进行替换及生成新的文本...
cout<<"I——打开文本文件\\n";cout<<"T——统计\\n";cout<<"S——检索\\n";cout<<"R——替换\\n";cout<<"Q——退出\\n\\n";cout<<"请选择:";cin>>op;Select_function(op);} void Select_function(char op) \/\/功能选择 { switch(op){ case 'i':case 'I':Display_text();...

C语言中如何将文本文件中的数字读入
voidmain(){ FILE*fin;inta,b,c,d;chars[20];floatf1,f2,f3,f4;fin=fopen("abc.txt","r");\/\/打开 fscanf(fin,"%1d%1d%1d%1d",&a,&b,&c,&d);\/\/按1位整型读前4个数 printf("a=%db=%dc=%dd=%d\\n",a,b,c,d);rewind(fin);\/\/文件回绕到开始处 fscanf(fin,"%s",s);...

C语言对记事本的读取和写入
按你需求重改的:include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<conio.h>#include<string.h>#define LEN 101 \/\/一行最大字符数(LEN-1)\/2typedef struct rowStr\/\/存储一行数据{ char str[LEN]; struct rowStr *next;}RSTR;void writeFile(FILE *fp,RSTR *rstrHead...

用C语言编写程序读取文本文件txt中的内容并逐行在屏幕上显示打印(中 ...
include <stdio.h>int main(void){ FILE *p;char ch[80] = {'\\0'};int i = 0; p = fopen("a.txt", "r"); while(!feof(p)) { if(fgetc(p) == '>') { while((ch[i++] = fgetc(p)) != '<');ch[i-1] = '\\n'; } }printf("%s",...

如何利用python语言匹配文本文件中的指定字符串,并将其所在行的后面几...
s="指定字符串"f=open("文本文件名")n=int(raw_input("输入输出的行数:"))line=f.readline()while line: if s in line: print line for i in range(n): line=f.readline() if line: print line else: break if not line:break line=f.readline()

[易语言] 求解按文本顺序内容批量向不同文件夹名称里写入txt文件
先定义了文本文件路径 textFilePath 和文件夹路径 folderPath。然后使用 BufferedReader 逐行读取文本文件中的内容,并使用 BufferedWriter 将读取到的内容写入到每个子文件夹下的新建文本文件中。最后输出已写入的文本文件数量。方法三:C语言实现 include <stdio.h> include <stdlib.h> include <string.h>...

茌平县15087024822: 如何利用c语言打开文本文件? -
巧文枸杞: C程序语言非常强大,通过打开文本的函数(里面的参数指出要打开文本的位置及文件名),即可打开相应的文本. 第一,包含的头文件:#include <stdio.h>,这是一个输入输出函数,第二,打开文本文件:FILE *file = fopen("c:\\1.txt","r"...

茌平县15087024822: C语言,如何编写一个程序,能打开文件中的文本,并把文本内容显示出来 -
巧文枸杞: char ch[100]; FILE *f = fopen("文件名", "r");fgets(ch, 100, f);printf(ch); 这个样子.

茌平县15087024822: 如何用C提取文本文档中的数据 -
巧文枸杞: C语言读取文本文件的内容,应该使用FILE指针变量,fopen\fscanf\fgets\fclose等函数完成,例子 main(){ FILE *FP; char str[255]; FP=fopen("abc.txt","r"); if (FP!=NULL){ fgets(fp,str); printf("文件的第一行是:%s\n",str); fclose(FP); }else printf("打开文件失败!\n"); }

茌平县15087024822: 如何:读取文本文件中的内容 -
巧文枸杞: 在C语言中,文件操作都是由库函数来完bai成的. 要读取一个txt文件,首先要使用文件打开函数fopen(). fopen函数用来打开一个文件,其调用的一般形式为du: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说...

茌平县15087024822: C语言中怎么从文件中读取特定数据? -
巧文枸杞: 哥哥我想出的办法是这样的:因为兄弟文件格式是一行一行的, 且每行开头是一个关键字,然后后面是相应数据, 所以哥哥是这么想的, 比如要读"AB2345"这个关键字对应行的内容, 那首先用变量或者宏定义定义下来, 然后从文件开头...

茌平县15087024822: 怎样用C语言实现读取一个文本文件里的内容,并打印出带标号的每一行(空行,不计入标号,也不打印出来) -
巧文枸杞: 假定输入文件每行长度不大于 4096 字节,行数不限. 输入文件名a.txt; 程序如下. #include<stdio.h> char s[4098]; int main( ) { int i,N=0; FILE *fp; fp=fopen("a.txt","r"); while(1){ if ( fgets(s,4096,fp)==NULL) break; if ( strlen(s)> 1) { N++; printf("%d %s",N,s);} } fclose(fp); return 0; }

茌平县15087024822: c语言如何实现从文本文件里读取数字? -
巧文枸杞: 可以通过fscanf,从文件中依次读取数据.当fscanf返回EOF时,表示读到文件结尾,这时停止读取即可.以文件中存储的为空格分隔的整型字符为例,可以写作:while(fscanf(fp,"%d",&n) != EOF)//从打开的文件指针fp指向的文件读数据,每...

茌平县15087024822: 从文本文件里读取数字,c语言如何实现 -
巧文枸杞: voidmain() { FILE*fin; inta,b,c,d; chars[20]; floatf1,f2,f3,f4; fin=fopen("abc.txt","r");//打开 fscanf(fin,"%1d%1d%1d%1d",&a,&b,&c,&d);//按1位整型读前4个数 printf("a=%db=%dc=%dd=%d\n",a,b,c,d); rewind(fin);//文件回绕到开始处 ...

茌平县15087024822: 在c语言中,如何读取一个txt文件中的信息 -
巧文枸杞: 一般来说在C语言中读取txt文件的信息有两种方法,一种是使用C语言标准文件I/O中的fopen()、fread()等等函数,一种是调用操作系统中的API函数,比如Windows上的ReadFile()、OpenFile()等等,现在操作系统一般都具备内存文件映射功能...

茌平县15087024822: 如何用C程序读写文本文件中的内容
巧文枸杞: 调用文本文件,读取命令,写入命令,文本文件名设置好了就不要更改路径,

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网