c语言如何将printf产生的数据写到txt文件中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言如何将printf产生的数据写到txt文件中相关的知识,希望对你有一定的参考价值。
有以下三种方式可以做到: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为打开的文件指针。 参考技术A 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语言求助:如何将.txt文件中的字符串存入字符数组?这个 .txt 文件是从命令行参数 btw 中读取的。
【中文标题】C语言求助:如何将.txt文件中的字符串存入字符数组?这个 .txt 文件是从命令行参数 btw 中读取的。【英文标题】:C language help:How to store strings from a .txt file into a character array? This .txt file is read from a command line argument btw. 【发布时间】:2017-02-07 04:55:15 【问题描述】:我需要创建一个程序,该程序将使用命令行参数读取 .txt 文件,然后加密该 txt 文件中的消息。
我用指针打开txt文件,打开成功。但我需要将消息(由许多段落组成)存储到单个字符数组中,以便我可以开始加密。
例如,如果消息是:我爱狗
我想将该消息存储到一个字符数组中,例如:
char word[5000];
char word[0] = I;
char word[1] = l;
char word[2] = o;
etc....
我尝试使用 for 循环将消息存储到单个字符数组中,但是当我尝试打印出该数组时,它没有显示在我的命令行中。
如何将 .txt 文件中的消息存储到单个字符数组中?
这是我的代码:
int main(int argc, char*argv[])
int a;
printf("The number of arguements is :%d \n", argc);
for(a=0; a<argc; a++)
printf("argc %d is %s \n",a, argv[a]);
//本节使用文件指针从文本文件中读取,然后显示出来
printf("\n");
char * fname= argv[1];
FILE *fptr= fopen(fname, "r");
char word[5000];
int c;
if (fptr==0)
printf("Could not open file\n");
else
printf("FILE opened successfully \n");
while (fgets(word, 5000, fptr) !=NULL)
printf("%s \n", word);
fclose(fptr);
【问题讨论】:
您的代码对我有用...我假设此代码 sn-p 中缺少的实际代码中有一个#include <stdio.h>
。这是我做的唯一一件我在这里看不到的事情。
【参考方案1】:
您的 while 循环使用 fgets,旨在逐行读取。如果您想要一个表示文件字节的字符数组,请使用 fread。首先你需要知道文件有多大;为此使用 stat 或 fstat 。
#include <stat.h>
struct stat statbuf;
int FS;
char* buffer
if (fstat(fileno(fptr),&statbuf))
... handle error
FS = statbuf.st_size;
然后,对于现在在 FS 中的文件大小,分配一些字节
buffer = (char*) malloc(FS)
然后阅读内容
fread(buffer, 1, FS, fptr)
【讨论】:
次要:为什么使用int
代替FS
? .st_size
是 off_t
类型,fread
期望 size_t
以上是关于c语言如何将printf产生的数据写到txt文件中的主要内容,如果未能解决你的问题,请参考以下文章