C语言写入内容到(Linux)本地文件

参考:二、C语言文件处理[写入、读取]_c语言写入文件_黑日里不灭的light的博客-CSDN博客

初衷是在测试的程序无法使用printf直接打印出来。只能写入文件来检测是否走到了打印的地方。(或许也可以用printk()?没考虑过,哎?等等,或许真的可以哎,感觉更方便,算了,以后再说吧 -_-! )

于是找到了这篇文章。以下摘录部分重要内容:

w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
wb 只写方式打开或新建一个二进制文件,只允许写数据。
wb+ 读写方式打开或建立一个二进制文件,允许读和写。
r 打开只读文件,该文件必须存在,否则报错。
r+ 打开可读写的文件,该文件必须存在,否则报错。
rb+ 读写方式打开一个二进制文件,只允许读写数据。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。

一、文件写入
打开:FILE *a; a=fopen("student.txt","w"); (需要先定义文件指针)

写入格式:fwrite(指向数组或结构体的指针,单个数组里面内容的大小,数量,文件指针)(注意返回0代表写入失败,成功返回数量)

关闭:fclose(a);

注意:写入的文件都是二进制文件,直接打开看到的是乱码

#include <stdio.h>
int main()
{
    FILE *a;
    int *p;
    int d[]={5,4,6,99};
    p=d;
    a=fopen("student.txt","wb");
    fwrite(p,sizeof(int),4,a);
    fclose(a);
}


————————————————
版权声明:本文为CSDN博主「黑日里不灭的light」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46765649/article/details/124453352

===  引用结束  ===

后来我发现如果把其中的

    int *p;
    int d[]={5,4,6,99};

改成

    char *p;
    char d[]={"5 4 6 99"};

再执行vim来打开我们创建出来写入内容的文件,就不是乱码了。

以下是我“改良”后的代码:

#include <stdio.h>
#include <string.h>
int main()
{
        FILE *a;
        char *p;
        char d[]={"i am ready to do it. Really.\n"};
        p=d;
        a=fopen("student.txt","a+");
        fwrite(p,sizeof(char),strlen(d),a);
        fclose(a);

        return 0;
}

最后的效果:

[root@localhost write-C-test]# cat student.txt 
hello world.123456i am ready to do it.i am ready to do it. Really.
i am ready to do it. Really.
[root@localhost write-C-test]# ./out 
[root@localhost write-C-test]# ./out 
[root@localhost write-C-test]# ./out 
[root@localhost write-C-test]# cat student.txt 
hello world.123456i am ready to do it.i am ready to do it. Really.
i am ready to do it. Really.
i am ready to do it. Really.
i am ready to do it. Really.
i am ready to do it. Really.
[root@localhost write-C-test]# ls
build.sh  out  student.txt  wr-C-test.c

如此,这个模板就可以用来写入要打印的日志了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值