如何在C语言中读取一个文件中的一段字符串去另一个新文件?

作者&投稿:苌鹏 (若有异议请与网页底部的电邮联系)
C程序,如何从指定文件中读取一个字符串?~

#include #include int main(){FILE *fp;char cl[100];if((fp=fopen("1.txt","r"))==NULL)exit(1);while(fscanf(fp,"%s",cl)==1)printf("%s
",cl);if(fclose(fp)!=0)exit(1);return 0;}
C语言是目前世界上流行、使用最广泛的面向过程的高级程序设计语言。 C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。

思路:先遍历字符串,如果找到该字符后,把后面的所有字符复制到另一个字符串。
例如:
#include #include int main (){char ch1[]="123456789",ch2[20],a='4';int i=0,j=0;while(ch1[i++]!=a);while(ch1[i]){ch2[j++]=ch1[i++];}ch2[j]='\0';puts(ch2);return 0;}/*输出:56789 */

分析:程序的逻辑很简单。程序必须打开两个文件,以可读的方式打开一个已有文件和以可写的方式打开一个新文件,后将已有文件中的内容,暂时存放在内存中,再写入新的文件,后关闭所有文件,程序结束。


步骤1:首先需要声明两个文件指针,并让它们分别指向打开的旧文件和新文件,并检查文件是否被打开,以下是代码:

FILE *f_old = NULL;  //指向旧文件的文件指针;
FILE *f_new = NULL;  //指向新文件的文件指针;
const char *old_name = "D:\emp\\old.txt"; //假设旧文件是D盘temp文件夹中的old.txt文件(字符串中输入'\'符号要用两个连续的'\'符号;
const char *new_name = "D:\emp\
ew.txt"; //假设新文件是D盘temp文件夹中的new.txt文件;

if((f_old = fopen(old_name,"r")) == NULL)  //以只读方式打开旧文件并检查,如果打开失败,程序将会结束,并在屏幕显示一条信息提示;
{
    printf("old.txt文件打开失败!
");
    return 1;
}

if((f_new = fopen(new_name,"w")) == NULL)  //以只写方式打开新文件并检查,如果打开失败,程序将会结束,并在屏幕显示一条信息提示;
{
    printf("nwe.txt文件打开失败!
");
    return 1;
}

步骤2:打开两个文件后,就需要读出旧文件内容,并暂时储存在一段固定大小的内存中,再写入新的文件。还需要一个循环来重复这项工作,直到文件末尾,以下是代码:

char temp[1024] = {0}; //声明大小为1024(可以更大,但不推荐)的字符串,并初始化为0;

while(fgets(temp,1024,f_old)) //因为并不知道要循环多少次,所以推荐使用while循环,当没有内容可读时,循环结束;
    fputs(temp,f_new);  //使用fputs函数将读出的内容写入新的文件;

步骤3:现在已经将旧文件的内容全部写入到了新文件中,接下来我们来做一些收尾工作,关闭文件,放空指针,以下是代码:

fclose(f_old);  //关闭旧文件;
fclose(f_new);  //关闭新文件;
f_old = f_new = NULL;  //让两个文件指针指向空;

任务完成,现在可以去看看新文件里的内容了。下面是完整代码:

#include <stdio.h>  //所有代码只需要stdio.h头文件;

int main(void)
{
    FILE *f_old = NULL; //旧文件指针; 
    FILE *f_new = NULL; //新文件指针; 
    const char *old_name = "D:\emp\\old.txt";  //旧文件名,可自定义; 
    const char *new_name = "D:\emp\
ew.txt"; //新文件名,可自定义
    
    if((f_old = fopen(old_name,"r")) == NULL) //打开并检查旧文件指针; 
    {
        printf("old.txt文件打开失败!
");  //若打开失败后会显示一条提示信息;
        return 1;  //返回1,程序非正常结束;
    }
    
    if((f_new = fopen(new_name,"w")) == NULL)  //打开并检查新文件指针;  
    {
        printf("nwe.txt文件打开失败!
");  //若打开失败后会显示一条提示信息;
        return 1;  //返回1,程序非正常结束;
    }
    
    char temp[1024] = {0}; //申明并初始化一个中转字符数组,大小可自定义;

    while(fgets(temp,1024,f_old)) //while循环使用fgets函数,读取旧文件内容暂时存放到temp,当无内容可读时,循环结束;
        fputs(temp,f_new);  //使用fputs函数,每次迭代将temp的内容写入新文件中;  
        
    fclose(f_old); //关闭旧文件; 
    fclose(f_new); //关闭新文件;  
    f_old = f_new = NULL; //将两个文件指针指向空; 
    return 0;
}


open函数打开,read函数读出数据到数组中,write函数写到另外一个文件中。

FILE 基本操作,可以帮你写


在计算机c语言中,如何判断字符串长度
用strlen函数。strlen是STRING LENGTH(字符串长度)的缩写。它是测试字符串长度的函数,函数的值为字符串中的实际长度。不包括'\\0'在内。包含在头文件<string.h>里 例如 char str[10]={\\"china\\"};printf(\\"%d\\",strlen(srt));输出5。

c语言中putchar函式和printf函式
C语言里,putchar函式和printf函式的区别具体是什么? printf("%长度+型别",引数)它可以输出很多格式的引数,如字元型,整型等 而且前面还可以加上要输出的长度 putchar()只能输出一个字元而已 c语言中,gets()和puts()函式与getchar()与putchar()函式有何区别? puts()函式...

大神何在,用C语言编程,写出来
要回答个问题,还挺麻烦 include "stdio.h"int main(){ int n,i,flag=1; printf("请输入一个整数:"); scanf("%d",&n); if(n<=1) { printf("%d不是素数\\n",n); return 0; } for(i=2;i<=n\/2;i++) { if(n%i==0) { flag=0; break; ...

C语言中 main() {int x=1,y=1,z=0; if(z<0) if(y>0 具体请看下边程序...
C语言中 main() {int x=1,y=1,z=0; if(z<0) if(y>0 具体请看下边程序。由于刚刚学习这门语言,请指教 main(){intx=1,y=1,z=10;if(z<0)if(y>0)x=3;elsex=5;printf(''%d\\t'',x);if(z=y<0)x=3;else... main() {int x=1,y=1,z=10; if(z<0) if(y>0) x=3;else...

在C语言中,何为主调函数和被调函数,他们之间有何必要联系,如何从程序中...
printf("Max is %d\\n",c);}int max(float x, float y){ float z;z=x>y?x:y;return(z);}其中main(){}是主调函数,因为其中“c=max(a,b);”调用了 被调函数 max。程序中只能有个 main(){}(即主函数),但可以有多个 子函数。主函数可以调用子函数,子函数可以相互调用。

C语言中表达式有何含义?
C语言在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则就会显得十分重要。基本...

何为引用操作?在C语言中如何实现?
引用能起到指针的部分作用,但是比指针安全.一个引用可以看作是某个变量的一个"别名"。对引用进行操作就像对原变量进行操作一样。主要用于函数的参数传递时使用。因为C语言没有类似VB的“传引用调用”这个功能,所以C++的引用填补了这个空白。从此即使需要改动参数,也直接传递一个变量过去即可。这在操作符...

c语言中的两个# include有何区别?
主要区别:一、应用不同 1、#include"stdio.h"include "stdio.h"一般用包含项目文件。2、#include<stdio.h> include<stdio.h>一般用包含系统文件。二、查找不同 1、#include"stdio.h"include"stdio.h"查找先从项目目录查找开始查找。2、#include<stdio.h> include<stdio.h>查找先从系统目录查找...

c语言属于一种机器语言吗?
一般用高阶语言编写的程式称为“源程式”,计算机不能识别和执行,要把用高阶语言编写的源程式翻译成机器语言,通常有编译和解释两种方式。组合语言、机器语言 C语言 组合语言:组合语言是一种用于电子计算机、微处理器、微控制器或其他可程式设计器件的低阶语言,亦称为符号语言。在组合语言中,用助记...

计算机C语言有什么用啊??
特征:1、C语言是高级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。2、C语言是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构...

荆州区13484708490: C语言如何读取文件中指定的某一段 -
武俘比卡: 使用fread函数读取指定长度的字符串,即使包含\n也会被读取,可以首先使用fseek定位到文件结尾,然后ftell函数返回的值就是文件的大小,这样就可以用循环多次读取文件,直到读取所有内容 FILE *file = NULL; char szFile[1025] = {0}; int ...

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

荆州区13484708490: c语言读取文件里的一部分内容怎么操作? -
武俘比卡: 将三个人的信息写入一个文本文件,如name.txt. #include struct personal { char name[20]; char gender[10]; int age; }per[3]; void main() { FILE *fp; int i,j; fp=fopen("name.txt","rt"); for( i=0;i

荆州区13484708490: C语言如何读取文本文件中的一行数据啊? -
武俘比卡: char *fgets(char *buf, int bufsize, FILE *stream);参数 *buf: 字符型指针,指向用来存储所得数据的地址.bufsize: 整型数据,指明存储数据的大小.*stream: 文件结构体指针,将要读取的文件流.返回值 1. 成功,则返回第一个参数buf;2. 在读字符时遇到end-of-file,则eof指示器被设置,如果还没读入任何字符就遇到这种情况,则buf保持原来的内容,返回NULL;3. 如果发生读入错误,error指示器被设置,返回NULL,buf的值可能被改变.

荆州区13484708490: 用C语言怎么读取一段文字并输出? -
武俘比卡: #include<stdio.h> void main() {char ch; FILE *fp1,*fp2; if((fp1=fopen("c:\\file1.txt","r"))==NULL) { printf("cannot open file1\n"); exit(0); } if((fp2=fopen("c:\\file2.txt","w"))==NULL) { printf("cannot open fiole2\n"); exit(0); } ch=fgetc(fp1); ...

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

荆州区13484708490: c语言逐行读取文件? -
武俘比卡: 可以使用fgets函数. 1 函数名: fgets 2 声明: char *fgets(char *buf, int bufsize, FILE *stream); 3 头文件: stdio.h 4 功能: 从文件结构体指针stream中读取数据,每次读取一行.读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个...

荆州区13484708490: C语言 怎么读取文件的每一行的内容 -
武俘比卡: #include <stdio.h> int main() {int i,n;char a[1024];FILE *fp;gets(a);if((fp=fopen(a,"r"))==NULL){printf("File Name Error.\n");return 0;}scanf("%d",&n);i=0;while(!feof(fp)){if(fgets(a,1000,fp)){i++;if(i==n){puts(a);fclose(fp);...

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

荆州区13484708490: c语言怎么实现从文件中读取指定 -
武俘比卡: //假设一行的文本内容不超过1000字符,如果估计超过,请自行修改函数中的1000 //如果打不开文件,返回NULL //如果文件不足n行,返回NULL //如果正获得正常数据,返回str的地址 char *getfileline(char *p,int n, char *str){FILE *fp;int i;if ((fp=fopen(p,"r"))==NULL){printf("打开文件错误\n");return NULL;}for(i=1;i

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