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 &lt;stdio.h&gt;。这是我做的唯一一件我在这里看不到的事情。 【参考方案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_sizeoff_t 类型,fread 期望 size_t

以上是关于c语言如何将printf产生的数据写到txt文件中的主要内容,如果未能解决你的问题,请参考以下文章

怎样用C语言将文件复制另外的文件夹

如何在两个dll文件之间传送数据

C语言如何读取txt文件里边的数据

易语言如何写到文件创建txt新文件?

php将数组元素按行写入文本文件

用c语言将已有两个文件test1.txt和test2.txt文件的数据,合并后存放到文件te