c语言如何读写 linux文本文件?

c语言如何读写 linux文本文件?,第1张

Linux下C语言的文件(fputc,fgetc,fwrite,fread对文件读写 *** 作)

//

fputc 向文件写入字符

#include <stdio.h>

#include <stdlib.h>

main()

{

FILE *fp

char ch

if((fp=fopen("test.txt","w"))==NULL)

{

printf("不能打开文件\n")

exit(0)

}

while ((ch=getchar())!='\n')

fputc( ch, fp )

fclose(fp)

}

-------------

小提示:

fp=fopen("test.txt","w") ,把"w"改为 "a" 可以创建文件并且追加写入内容

exit(0)需要腊闭包含 stdlib.h 头文件,才能使用

//

fgetc 读取字符

#include <stdio.h>

#include <stdlib.h>

main( int argc, char *argv[] )

{

char ch

FILE *fp

int i

if((fp=fopen(argv[1],"r"))==NULL)

{

printf("不能打开文件\n")

exit(0)

}

while ((ch=fgetc(fp))!=EOF)

putchar(ch)

fclose(fp)

}

文件结尾,通过判断 EOF

//

fwrite 的使用

使数组或结构体等类型可以进行一次性读写

#include <stdio.h>

#include <stdlib.h>

main()

{

FILE *fp1

int i

struct student{

char name[10]

int age

float score[2]

char addr[15]

}stu

if((fp1=fopen("test.txt","wb"))==NULL)

{

printf("不能打开文件")

exit(0)

}

printf("请输入信息,姓名 年龄 分数1 分数2 地址:\n")

for( i=0i<2i++)

{

scanf("%s %d %f %f %s",stu.name,&stu.age,&stu.score[0],&stu.score[1], stu.addr)

fwrite(&stu,sizeof(stu),1,fp1)

}

fclose(fp1)

}

//

fread 的使用

#include <stdio.h>

#include <stdlib.h>

main()

{

FILE *fp1

int i

struct student{

char name[10]

int age

float score[2]

char addr[15]

}stu

if((fp1=fopen("test.txt","rb"))==NULL)

{

printf("不能打开文件")

exit(0)

}

printf("读取磨姿文件的内容如下:\n")

for (i=0i<2i++)

{

fread(&stu,sizeof(stu),1,fp1)

printf("%s %d %7.2f %7.2f %s\n",stu.name,stu.age,stu.score[0],stu.score[1],stu.addr)

}

fclose(fp1)

}

//

fprintf , fscanf, putw , getw , rewind , fseek 函数

这些函数的话我就不演示了 ,

这些函数基本都一瞎局绝对来使用,例如 fputc 和 fgetc 一起来用.

既然得到了这文件指针,你想怎么打开都行,无需知道以前是什么模式。

用open更新你想要的打开方式

o_rdonly

以只读方式打开文件

o_wronly

以只写方式打开文件

o_rdwr

以可读写方式打开文件。上述三种旗标是互斥的,

也就是不可同时使用,

但可与下列的旗标利用or(|)运算符组合。

o_creat

若欲打开的文件不存在则自动建立该文件

o_excl

如果o_creat

也被设置,

此指令会去检查文件是否存在。文件若不存在则建立该文件,

否则将导致打开文件错误。此外,

若o_creat与o_excl同时设置,

并且欲打开的文件为符号连接,

则会打开文件失败。

o_noctty

如果欲打开的文件为终端机设备时,

则不会将该终端机当成进程控制终端机。

o_trunc

若文件存在并且以可写的方式打开时,

此旗标会令文件长度清为0,

而原来存于该文件的资料也会消失。

o_append

当读写文件时会从文仔卜件尾开始念哪穗移动,

也就是所写入的数据会以附加的方式加入到文件后面。

o_nonblock

以不可阻断的方式打开文件,

也就是无论有无数据读取或等待,

都会立即返回进程之中。

o_ndelay

同o_nonblock。

o_sync

以同步的方式打开文件。

o_nofollow

如果参数pathname

所指的文件为一符号连接,

则会令打开文件失败。

o_directory

如果参数pathname

所指的文件并非为一目录,

则会令打开文件失败。

这是你要的

r

打开只读文件,

该文件必须存在。

r+

打开可读写的文件,

该文件必须存在。

w

打开只写文件,

若文件存在则文件长度清为0,

即该文件内容会消失。若文件不存在则建立该文件。

w+

打开可读写文件,

若文件存在则文件长度清为零,

即该文件内容会消失。若文件不存在则建立该文件。

a

以附加的方式打开只写文件。若文件不存在,

则会建立该文件,

如果文件存在,

写入的数据会被加到文件尾,

即文件原先的内容会被保留。

a+

以附加方式打开可读写的文件。若文件不缓者存在,

则会建立该文件,

如果文件存在,

写入的数据会被加到文件尾后,

即文件原先的内容会被保留。

Linux把外部设备也当成文件来管理,这是继承了Unix一切皆文件的设计思想。

/dev目录下的文件皆外部设备,所以你必漏雹须有相应的内核模块来驱动相应的设备,否则此设备无法读写。

你是在测试COM口么?COM口有没有连接测试设备?没有的话,就算有相应的内核模块耐搜培也是白搭的,就象光有电灯开昌唯关,没安装灯泡,你怎么按开关都白搭。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12249742.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存