主页 > 科技资讯 >c语言文件读写编程 >
c语言文件读写编程

2020-07-03


c语言文件读写编程


while(ch!=EOF){
putchar(ch);
ch=fgetc(fp1);
}

这段实在输出字不是读所以s里没用东西if(fp2=fopen("C:\data1.txt","wb")==NULL){
printf("Cannotopenit! ");
return1;
}

你的输出文件也错了


c语言如何将printf产生的数据写到txt文件中

#include
#include int main(){ char money= 's'; char a ='w'; char b ='e'; char day='t'; FILE *fp = fopen("a.txt", "a+");//打开并在指定地点只写文件。 FILE *fp = fopen("路径","写入");"w" => 创建并写入(覆盖式写入)"a" => 创建并写入(接续式写入)"a+" =>创建并写入(分行式写入) fprintf(fp,"%c,%c,%c,%c,%c ",money,a,b,b,day);//使用fprintf 将输出端口变更为 文档fclose(fp);//关闭指定文件 return 0;}扩展资料C语言printf()函数的使用1、printf()函数是C语言标准I/O中最常用的控制台输出函数,除了最常见的%d,%c,%s和%f以外;printf()和%说明符还提供很多功能丰富的输出形式;2、demo程序输出结果中,[ ]内表示的是编程时书写的常量的形式,=后是输出结果;3、printf()中存在自动类型转换,如%f中对-3.14的输出,-3.14原本被系统认为是double浮点常量,但使用%f仍然是转换类型后,用float类型输出;4、printf()中存在隐式的进制转换,如%o中对十进制常量80的输出,结果为八进制数0120,显示为120,对显示的八进制常量0123输出则得到123,说明%o的显示结果是隐式的八进制数。同理%x中,对十进制常量100输出为64,其实该64应该是0x64,而0x12输出也为12,这些输出结果都是隐藏了进制的。

有以下三种可以做

1 使用重定向函数freopen将标准输出重定向到的txt文件。
其使用为,在所有的系统输出前,调用
stdout = freopen("out.txt", "w", stdout);
out.txt即所要写入的txt文件名。

2 在执行时处理。
编译最终生成的为可执行文件,运行也是运行这个文件。

在运行文件时,可以通过重定向符号,将输出重定向到其它文件。
如果生成的可执行文件为my.exe,那么在命令行调用
my.exe > out.txt
即可将my.exe的输出写入到out.txt中。

3 以上两种方法都是把所有的标准输出,包括printf, puts, putchar等,均输入到对应文件中。
如果要仅输出printf的结果,可以先打开文件,然后修改代码,把每个printf的调用修改对应的写文件函数。即printf(xxxx);修改为fprintf(fp, xxxxx);的形式。
其中fp为打开的文件指针。.h 里定义fp=fopen(1.txt,w); //用 fopen 函数打开文件,第一个表示文件名不是当前 // 路径请加 \\ 号,如 C:\\Windows\\System32,w 表(write) if (fp!=NULL) // 打开成功 fprintf(fp,%d,1); // fp 文件流变量,%d写入格式,1 是写入的数据} 程序执行后,只要你有权限写文件,那么将会在当前目录产生 1.txt 用记事本打开,里面有一个 1 像这样调用程序: aaa.exe 1.txt(重写)或 aaa.exe 1.txt(追加) printf函数的主要功能是按一定的格式将数据显示在(输出到)屏幕上,将数据写入txt文档(此文档一定要存在)的较好方法是使用函数fput()或fputs(),前者是一次写入一个字符,后者是一次写入一个字符串。一般的写入过程是,先打开文件,然后操作文件,最后记住要关闭文件。主要代码如下:FILE *pf; if((pf=fopen(你的txt文档名字,打开的模式))==NULL;//你的txt文档最好放在当前目录下,打开的模式有r(只读)、w(只写)、a(追加)等以及相应的组合。{ //打开失败,出错处理}else{ lseek(pf,nPos,SEEK_CUR);//将文件指针从当前位置移动到nPos处 char szTxt[128]; memset(szTxt,0,sizeof(szTxt)); printf(szTxt,%d,12345); if((fputs(szTxt,pf))!=EOF){//完成写入}else{写入出错}} fclose(pf); 打开stdio.h,你会发现……对,就是他:freopen函数,意为在原有FILE基础上打开一个标准文件。好了,我们就利用这样的便捷,把stdout这个程序启动时被设定的FILE map到一个标准文件,这样,printf()函数就立即输出到指定文件中。记住要用fclose关闭stdout。 FILE * __cdecl freopen(const char *, const char *, FILE *); freopen就像fopen一样方便本回答被提问者采纳
C语言编程时为什么要加头文件?
  加个#include 的就是包含的意思,这个是c编译软件的预处理语句,本是c语言的语法。也就是提供给编译器在生成最终应用程序之前用的。比如#include “math.h” 就是把math.h 这个文件里的内容简单的复制到当前位置来,里面有定义好的关于数学运算的函数之类的,而函数是必须要先定义,后使用。所以如果要用数学函数,那么就要先定义,而math.h里面就是为我们定义好了的一些列函数,简单包含进来,就相当于一次性全部定义了可能要使用的所有函数,这样就可以直接用里面定义的函数名直接调用那些功能了。而如果不包含那个,也可以自己定义一些列的数学函数,按顺序写在开始的地方,之后再调用。效果是一样的。记住嘛,#include思就是简单的复制后面制定的文件内容到当前位置。在C语言程序中,头被大量使用。一般而言,每个C++/C程序通常由头文件(header files)和定件(definition files)组成。头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序的声明(declaration),而定义文件用于保存程序的实现 (implementation)。
C++/C程序的头文件以“.h”为后缀。以下是假设名称为 graphics.h的头文件:

#ifndef GRAPHICS_H (作用:防止graphics.h被重复引用)

#define GRAPHICS_H

#include.... (作用:引用标准库的头文件)

...

#include... (作用:引用非标准库的头文件)

...

void Function1(...); (作用:全局函数声明)

...

class Box (作用:类结构声明)

{

...

};

#endif

从以上例子可以看出,头文件一般由三部分内容组成:(1)头文件开头处的版权和版本声明;(2)预处理块;(3)函数和类结构声明等。在头文件中,用 ifndef/define/endif结构产生预处理块,用 #include 格式来引用库的头文件。头文件的这种结构,是利用C语言进行开发软件所通常具备的,属于公有知识。

一般在一个应用开发体系中,功能的真正逻辑实现是以硬件层为基础,在驱动程序、功能层程序以及用户的应用程序中完成的。根据以上示例,可以发现头文件的主要作用在于调用库功能,对各个被调用函数给出一个描述,其本身不包含程序的逻辑实现代码,它只起描述性作用,告诉应用程序通过相应途径寻找相应功能函数的真正逻辑实现代码。用户程序只需要按照头文件中的接口声明来调用库功能,编译器会从库中提取相应的代码。本回答被网友采纳这是由C语言编译规则决定了的,一个头文件对应着一个函数库或者一个自定义的函数文件,头文件相当于这个库函数或自定义函数文件的目录,是一个索引,编译时按这个目录去寻找具体的函数体。头文件是序中需要用到东西需要某个数学函数,
则必须包括数学相关头文件,如math.h,当然,也可以自己写函数,只要你不怕麻烦!
头文件是你程序中需要用到东西,要某个数学函数,
则必须包括数学相关头文件,如math.h,当然,也可以自己写函数,只要你不怕麻烦! 头文件就是在你所编制的程序运行时要用到的文件!
如 math.h 和 stdio.h
头文件就是在你所编制的程序运行时要用到的文件!
如 math.h 和 stdio.h
头文件就是在你所编制的程序运行时要用到的文件!
如 math.h 和 stdio.h
C语言编程实现:将一个文件的内容复制到另一个文件。(详细点的,考试用。)谢谢!

#include#include#include#ifdefBUFSIZ#undefBUFSIZ#defineBUFSIZ4096#endif/*使用格式:mcpy源文件目标文件标文件和源文件不能一样,否则会清空文件内容,源文件存在,目标文件可存在也可不存在,如果存在,内容会被覆盖掉。*/intmain(intargc,char**argv){ charbuf[BUFSIZ]; intmsglen; if(argc!=3||strcmp(argv[1],argv[2])==0) /*argc:命令行模式下,输入的参数数目。 argv:第一个参数的首地址。*/ {fprintf(stderr,"******************************** ");fprintf(stderr,"Pleaseusage:%ssource_filedestination_file Andsource_fileisdifferentfromdestination_file ",argv[0]);fprintf(stderr,"******************************** ");exit(0); } FILE*fp_src,*fp_des; if((fp_src=fopen(argv[1],"r"))==NULL) /*为空,则打开失败*/ {fprintf(stderr,"open%sfailed! ",argv[1]);exit(1); } if((fp_des=fopen(argv[2],"w"))==NULL) /*为空,则打开或创建失败*/ {fprintf(stderr,"open/create%sfailed! ",argv[2]);exit(2); } while(fgets(buf,BUFSIZ,fp_src)!=NULL) /*从源文件读,读失败或到达文件尾部时,返回NULL*/{ if(fputs(buf,fp_des)==EOF) /*写入目标文件,写入失败时,返回EOF;若成功返回写入的字节数*/ {fprintf(stderr,"copy%sto%sfailed! ",argv[1],argv[2]);exit(3); }}printf("copy%sto%ssuccessful! ",argv[1],argv[2]);return0;}

//程序完成作:将D盘下 1.txt 文件内容拷贝至 2.txt 文件中
#include
#include
void FileCopy(FILE *,FILE *);//拷贝子程明
void main(void)
{
FILE *fpin, *fpout;
if((fpin = fopen("D:\1.txt","rb")) == NULL)
{
printf("1 can't open file! /n");//文件打开失败打印输
return;
}
if((fpout = fopen("D:\2.txt","wb")) == NULL)
{
printf("2can't open file! /n");
return;
}
FileCopy(fpin,fpout);
fclose(fpin);
fclose(fpout);
fpin = NULL;
fpout = NULL;
printf("~~~~~~~~~~~~~~~~~~");
return;
}
void FileCopy(FILE *fpin, FILE *fpout)
{
char ch;
ch = getc(fpin);
while(!feof(fpin))
{
putc(ch,fpout);
ch = getc(fpin);
}
}
求加分 哈哈方法1
#include
#include
void main()
{
char filename[100],filename1[50],filename2[50];

printf("请输读的文件名:");
scanf("%s",filename1);
printf("请要写件名:");
scanf("%s",filename2);
sprintf(filename,"copy %s %s /y>nul",filename1,filename2);
system(filename);
}
方法2
#include
void main()
{
FILE *source,*object;
size_t readlen;
char filename1[50],filename2[50];
char diskbuffer[8192];

printf("请输入要读的文件名:");
scanf("%s",filename1);
printf("请输入要写的文件名:");
scanf("%s",filename2);
source=fopen(filename1,"rb");
if (source==NULL)
{
fclose(source);
return;
}

object=fopen(filename2,"wb");
do
{
readlen=fread(diskbuffer,1,8192,source);
fwrite(diskbuffer,1,readlen,object);
}while(!feof(source));
fclose(object);
fclose(source);
}打开两个文件,从一个文件读数据,写入到另一个文件,例如: //------{ FILE *fp1,fp2; char c; fp1=fopen("dat.txt","r"); /*打开#include
int main()
{
FILE *fp1,*fp2;
char buf[1024];
fp1=fopen("C:/1.dat","rb");
fp2=fopen("C:/2.dat","wb");
fread(buf,1024,1,fp1);
while(!feof(fp1))
{
fwrite(buf,1024,1,fp2);
fread(buf,1024,1,fp1);
}
fclose(fp1);
fclose(fp2);
}



上一篇:
下一篇:


今日焦点
一周热榜