⑴ c语言屏幕输出的内容如何保存到文件中
C语言中用流替换函数freopen可以从文件中读取数据或将数据输出到文件中。
需要引用库"stdio.h",即
#include<stdio.h>
freopen的声明如下:
FILE *freopen(const char * restrict filename, const char * restrict mode, FILE * restrict stream);
形参说明:
filename:需要重定向到的文件名或文件路径。
mode:代表文件访问权限的字符串。例如,"r"表示“只读访问”、"w"表示“只写访问”、"a"表示“追加写入”。
stream:需要被重定向的文件流。
返回值:如果成功,则返回该指向该输出流的文件指针,否则返回为NULL。
用法:
将输入流从stdin替换成指定文件可以从文件中读取数据;
将输出流从stdout替换成指定文件可以将数据输出到文件中。
下面举个例子:
#include<stdio.h>
int main(){
freopen("in.txt","r",stdin); //从in.txt中读数据
freopen("out.txt","w",stdout);//向out.txt中写数据
int a,b;
while(~scanf("%d%d", &a, &b)){
printf("%d %d\n");
}
return 0;
}
⑵ 如何将C语言运行的结果存到TXT文本中
简单,直接用管道的方式,比如你的程序为a.exe
那么直接, ./a.exe > 1.txt 直接写就入 1.txt中了
⑶ C语言怎样将定义的函数中程序运行的结果写到文件中
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
struct student
{
char name[20];
int num;
float score;
struct student* pnext;
};
int count;
struct student* creat()
{
struct student* phead=NULL;
struct student* ptail,*p;
count=0;
ptail=p=(struct student*)malloc(sizeof(struct student));
printf("依次输入学生学号,姓名,成绩:\n");
scanf("%d%s%f",&p->num,p->name,&p->score);
while(p->num!=10)
{
count++;
if(count<=10)
{
p->pnext=phead;
ptail=p;
phead=p;
}
else{
p->pnext=NULL;
ptail->pnext=p;
ptail=p;
}
p=(struct student*)malloc(sizeof(struct student));
scanf("%d%s%f",&p->num,p->name,&p->score);
}
free(p);
return phead;
}
void print(struct student* phead)
{
struct student *ptemp;
int index=1;
printf("--这个链表中有%d个学生--\n",count);
printf("\n");
ptemp=phead;
while(ptemp!=NULL)
{
printf("学生%d是: ",index);
printf("学号%d ",ptemp->num);
printf("姓名%s ",ptemp->name);
printf("成绩%f \n",ptemp->score);
printf("\n");
ptemp=ptemp->pnext;
index++;
}}
struct student* insert(struct student* phead)
{
struct student* p;
printf("插入一个成员\n");
p=(struct student*)malloc(sizeof(struct student));
scanf("%d%s%f",&p->num,p->name,&p->score);
p->pnext=phead;
phead=p;
count++;
return phead;
}
void delet (struct student* phead,int index)//把delete改成了delet,其他没变,否则我的系统编译出错。
{
int i;
struct student* ptemp;
struct student* ppre;
ptemp=phead;
ppre=ptemp;
printf("删除第%d个学生\n",index);
for(i=1;i<index;i++)
{
ppre=ptemp;
ptemp=ptemp->pnext;
}
ppre->pnext=ptemp->pnext;
free(ptemp);
count--;
}
void file(struct student* phead)
{
FILE *fp;
if((fp=fopen("D:\\cx.txt","wb"))==NULL)
{printf("file can not open!\n"); exit(1);}
int index=1;//加上这一句
while(phead!=NULL)
{
//fwrite(phead,sizeof(struct student),1,fp);//屏蔽这一句
//加上下面这几句
fprintf(fp,"学生%d是: ",index);
fprintf(fp,"学号%d ",phead->num);
fprintf(fp,"姓名%s ",phead->name);
fprintf(fp,"成绩%f \n",phead->score);
fprintf(fp,"\n");
index++;
//ok
phead=phead->pnext; }
fclose(fp);
printf("-----成功保存信息!-----\n");
}
int main()
{
struct student* phead;
phead=creat();
phead=insert(phead);
delet(phead,2);
print(phead);
file(phead);
return 0;
}
试试看可以文本打印没?,一个小提醒:你的程序运行似乎有点小问题,自己看看吧
改成下面可能容错性会好一点,也试试:(我也初学,请见谅!)
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct Student//这里我用了首字母大写
{
char name[20];
int num;
float score;
struct Student * pnext;//这里如果把struct Student改成student会编译出错(以前没注意)
}student;//利用typedef后面可以省力点
int count;
student * creat()
{
student * phead=NULL;
student * ptail, * p;
count=0;
ptail=p=(student *)malloc(sizeof(student));
printf("依次输入学生学号,姓名,成绩:\n");
scanf("%d%s%f",&p->num,p->name,&p->score);
while(p->num!=0)//这里我改了,容错性会好些,输入学号为0时会结束输入,
//后面程序也考虑了空记录的情况
{
count++;
if(count==1)//第一条记录为头记录
phead=p;//设置第一条记录为头记录
else
ptail->pnext=p;
ptail=p;
p=(student*)malloc(sizeof(student));
scanf("%d%s%f",&p->num,p->name,&p->score);
}
ptail->pnext=NULL;//设置尾记录指向空地址
return phead;
}
void print(student* phead)
{
student *ptemp;
ptemp=phead;
int index=1;
printf("--这个链表中有%d个学生--\n",count);
printf("\n");
if (phead!=NULL)//判断是不是为空记录
{
do
{
printf("学生%d是: ",index);
printf("学号%d ",ptemp->num);
printf("姓名%s ",ptemp->name);
printf("成绩%f \n",ptemp->score);
printf("\n");
ptemp=ptemp->pnext;
index++;
}while(ptemp!=NULL);//看看不用do...while换成while行不?有时会搞不明白的,呵呵
}
}
student* insert(student* phead)//插入函数未改动,但该函数是插到第一个之前的,可以改一下
{
student* p;
printf("插入一个成员\n");
p=(student*)malloc(sizeof(student));
scanf("%d%s%f",&p->num,p->name,&p->score);
p->pnext=phead;
phead=p;
count++;
return phead;
}
student* delet (student* phead,int index)//我把delete改成delet了否则我的编译器没法通过
{
int i;
student* ptemp;
student* ppre;
ptemp=phead;
ppre=ptemp;
printf("删除第%d个学生\n",index);
if(index>count || index<=0)//提高了容错性
printf("共有%d个记录,无法删除第%d个学生\n",count,index);
else
{
if (1==index)
{
phead=phead->pnext;
}
else
{
for(i=1;i<index;i++)
{
ppre=ptemp;
ptemp=ptemp->pnext;
}
ppre->pnext=ptemp->pnext;
}
free(ptemp);
count--;
}
return phead;
}
void file(student* phead)
{
FILE *fp;
if((fp=fopen("D:\\cx.txt","wb"))==NULL)
{printf("file can not open!\n"); exit(1);}
student *ptemp;
ptemp=phead;
int index=1;
fprintf(fp,"--这个链表中有%d个学生--\n",count);
fprintf(fp,"\n");
if (ptemp!=NULL)
{
do
{
fprintf(fp,"学生%d是: ",index);
fprintf(fp,"学号%d ",ptemp->num);
fprintf(fp,"姓名%s ",ptemp->name);
fprintf(fp,"成绩%f \n",ptemp->score);
fprintf(fp,"\n");
ptemp=ptemp->pnext;
index++;
}while(ptemp!=NULL);
}
fclose(fp);
printf("-----成功保存信息!-----\n");
}
int main()
{
student* phead;
phead=creat();
phead=insert(phead);
phead=delet(phead,2);//分别改成0,1,2,末记录,试试原来的程序这里有问题的
print(phead);
file(phead);
return 0;
}
⑷ 用C语言如何将结果输出到一个文本文件中保存
文件的操作步骤:
#include <stdio.h> #include <stdlib.h> int main()
{
FILE *fp;
int i, d;
fp=fopen("data.txt","w");
if(fp==NULL)
{
printf("File cannot open! " );
exit(0);
}
for(i=0; i<10; i++)
{
scanf("%d", &d);
fprintf(fp,"%d ", d);
}
fclose(fp);
return 0;
}
格式化输出:
#include <stdio.h> #include <stdlib.h> int main()
{
FILE *fp;
int i, No;
float salary;
fp=fopen("data.csv","w");
if(fp==NULL)
{
printf("File cannot open! " );
exit(0);
}
//输入5名员工的工号,并保存到文件中
for(i=0; i<5; i++)
{
scanf("%d %f", &No, &salary);
fprintf(fp,"%d, %.2f ", No, salary);
}
fclose(fp);
return 0;
}
(4)在c语言中如何把结果存放文件中扩展阅读:
从文件中读取字符:
#include <stdio.h> #include <stdlib.h> int main()
{
FILE *fp;
char c;
if ((fp=fopen( "data.dat" , "r" ))==NULL)
{
printf("File cannot open!");
exit(0);
}
while((c=fgetc(fp))!=EOF)
putchar(c);
fclose(fp);
return 0;
}
⑸ 怎么把c语言编的程序的结果输入到一个文本文件中
c语言编的程序的结果输入到一个文本文件中可以使用fprintf;
例:
#include<stdio.h>
main(){
FILE *fpt;
fpt = fopen("wendangming.txt","w");//打开文档,写入
fprintf(fpt,"Hello world");
fclose(fpt);
}
(5)在c语言中如何把结果存放文件中扩展阅读
它打开一个文本文件,逐个字符地读取该文件
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream testByCharFile;
int num;
char c;
testByCharFile.open("6.5.cpp",ios::in);
while(!testByCharFile.eof())
{
testByCharFile >> c;
num++;
}
testByCharFile.close();
cout << num << endl;
}
⑹ 如何保存c语言程序计算的结果
先打开一个文件:
FILE *fphzk
fphzk=("c:\\test.txt',"rt+")
其意义是打开C驱动器磁盘的根目录下的文件test.txt。
文件使用方式 意 义
“rt” 只读打开一个文本文件,只允许读数据
“wt” 只写打开或建立一个文本文件,只允许写数据
“at” 追加打开一个文本文件,并在文件末尾写数据
“rb” 只读打开一个二进制文件,只允许读数据
“wb” 只写打开或建立一个二进制文件,只允许写数据
“ab” 追加打开一个二进制文件,并在文件末尾写数据
“rt+” 读写打开一个文本文件,允许读和写
“wt+” 读写打开或建立一个文本文件,允许读写
“at+” 读写打开一个文本文件,允许读,或在文件末追加数 据
“rb+” 读写打开一个二进制文件,允许读和写
“wb+” 读写打开或建立一个二进制文件,允许读和写
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据
if((fp=fopen("c:\\test.txt","rt+")==NULL)
{
printf("\nerror on open file!");
getch();
exit(1);
}
这段程序的意义是,如果返回的指针为空,表示不能打开C盘根目录下的test.txt文件,则给出提示信息“error on open file!”,下一行getch()的功能是从键盘输入一个字符,但不在屏幕上显示。在这里,该行的作用是等待, 只有当用户从键盘敲任一键时,程序才继续执行, 因此用户可利用这个等待时间阅读出错提示。敲键后执行exit(1)退出程序。
下面的程序是完成读入一个字符,然后保存在文件中。
#include<stdio.h>
main()
{
FILE *fp;
char ch;
if((fp=fopen("string","wt+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
printf("input a string:\n");
ch=getchar();
while (ch!='\n')
{
fputc(ch,fp);
ch=getchar();
}
rewind(fp);
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
printf("\n");
fclose(fp);
}
⑺ c语言中怎样把数据存入文件
原因:
使用fopen时参数不正确,你是用 w参数,若文件存在则文件长度清为0,即该文件内容会消失。每次都是重新清空并写数据, 将w修改为a即可.
fopen函数说明见下方:
---------------
FILE * fopen(const char * path,const char * mode);
[编辑本段]函数说明
参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
rb+ 读写打开一个二进制文件,只允许读写数据。
rt+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
⑻ C语言中,如何把一个函数的结果存放在文本文件中,并且不写在主程序内
看了你和别人的交流 直接上个代码吧
folatfun(floatx);
floata,b;
main(){
scanf("输入x",&a);
b=fun(a);
printf("x=%f",b);}
floatfun(floatx){
floatret;
FILE*fp;
if(x<-1)ret=x;
if(x>=-1)ret=x*2;
fp=fopen("result.txt","w");
fprintf(fp,"x=%f",ret);
returnret;
}
这样就是你要求的了
主函数不变 在fun中返回同时输入到文件 然后主函数正常输出
⑼ 怎么样将C语言程序执行的结果保存在一个文件里
在dos模式下,可以使用“应用程序名
=>
文本文件”回车。
例如要把一个名为test.exe的c语言可执行程序的运行结果保存下来,则可以在dos的命令提示符下:test
=>
c:\result.txt
回车,这样运行结果就保存在文本文件中了。
⑽ c语言如何用文件存储数据
具体操作步骤如下:
1、首先,创建一个新文件夹,在该文件夹中创建一个文档,如下图所示,然后进入下一步。