代码:

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <fcntl.h>
 4 /*************基本的函数API********************
 5 int open(const char *pathname, int oflag, int perms)
 6 oflag:
 7     O_RDONLY 只读
 8     O_WRONLY 只写
 9     O_RDWR   读写
10     O_APPEND 追加
11     O_CREAT  创建
12     O_EXCL   测试
13     O_TRUNC  删除
14 perms:
15     被打开的文件的存取权限,采用8进制
16 int close(int fd)
17 ssize_t read(int fd, void *buf, size_t count)
18 fd:
19     文件描述符
20 buf:
21     指定存储器读取数据的缓冲区
22 count:
23     指定读取数据的字节数
24 ssize_t write(int fd, void *buf, size_t count)
25 fd:
26         文件描述符
27 buf:
28         指定存储器读取数据的缓冲区
29 count:
30         指定读取数据的字节数
31 off_t lseek(int fd, off_t offset, int whence)
32 fd:
33         文件描述符
34 offset:
35         偏移量,每一读写操作需要移动的字节数,可向前、可向后
36 count:
37         当前位置的基点:
38         SEEK_SET(当前位置是文件的开头)
39         SEEK_CUR(当前位置为文件指针的位置,新位置为当前位置加上偏移量)
40         SEEK_END(当前位置问文件的尾部,新位置为文件大小加上偏移量的大小)
41 **********************************************/
42 int main(void)
43 {
44     int fd,len;
45     char *buf = "Hello World!\n",Out[30];
46     fd = open("a.txt", O_CREAT | O_TRUNC | O_RDWR, 0600);
47     printf("open file:a.txt fd = %d\n", fd);
48     len = strlen(buf);
49     int size  = write(fd, buf, len);
50     close(fd);
51     //Begin to read the file
52     fd = open("a.txt", O_RDWR, 0600);
53     lseek(fd, 0, SEEK_SET); //Before to read the file,you should call the function to make the fd point to begin of files
54     size = read(fd, Out, 12);
55     printf("size = %d\nread from file:\n %s\n",size,Out);
56     close(fd);
57     return 0;
58 }

实例1   读取一张通过MATLAB读取JPG图片转换成TXT文本的文件内容:

首先图像是这样的lena.jpg:

      

通过MATALB读取进去之后,转换成灰度图像,如下所示处理结果如上图所示:

I = imread('F:\Leanring\C\Learning\lena.jpg');
Gray = rgb2gray(I);
imshow(Gray)

接下来我们在变量一栏中,复制粘贴所有的数据到TXT文本当中,如下所示:

                        MATLAB数据                                                          文本数据

   

这样,我们通过分析文本中的数据分布格式,首先,文本挡住的所有数据都是只包含了图像的数据的,不包括了JPG图片格式相关的数据内容,其次,在我们复制粘贴的过程中的每两个数据之间的分隔方式都是通过TAB键来分隔的,同样的在每一行数据的结尾部分,都是通过回车键\t或者换行符\n来结尾的,所以根据这样的数据格式,我们设计如下的读取对应文本内容的C语言函数API,这里的TAB在ASCII的编码数据是:9 同样的,\t和\n的ASCII的编码是10和13,这样的话,通过if就能隔离开数据。

void ImageReadFromTXT(int *data,int width,int height,char *dir)
{FILE *Pic;int D=0,count=0,Bit[3]={0},i,j;Pic = fopen(dir,"rb");for(i=0;i<height;i++){D = 0;for(j=0;j<width;j++){count = 0;Bit[0] = 0;Bit[1] = 0;Bit[2] = 0;D = 0;while(1){fread(&D,sizeof(char),1,Pic);if(D == 9 || D == 10 || D == 13) break;// D == 9Bit[count] = D-48;count++;}*(data+i*width+j) = Bit[0]*100+Bit[1]*10+Bit[2];}}fclose(Pic);
}

主函数内容如下:

 1 /***********************************************************
 2 从TXT文件中读取一个图片文件的数据,图片文件的数据首先通过
 3 MATLAB读取到变量中,然后复制粘贴到TXT文件当中处理。
 4 ***********************************************************/
 5     int width=300;
 6     int height =300;
 7     int data[width][height];
 8     ImageReadFromTXT(data,width,height,"lena.txt");
 9     printf("The first data is:%d\n",data[0][0]);
10     printf("The first data is:%d\n",data[0][1]);
11     printf("The first data is:%d\n",data[0][2]);
12     printf("The first data is:%d\n",data[0][3]);

View Code

实验结果:

转载于:https://www.cnblogs.com/uestc-mm/p/7630152.html

Linux下C语言的文件操作相关推荐

  1. linux下c语言读写文件操作,linux下的系统级c语言文件读写操作

    最近初次接触Linux这么高端的东西,有种进城的感觉.进了linux,发现城里人说话做事的方式都很不一样. 个人感觉,初次接触linux主要的痛点在于命令行交互的方式,这就要求我接受城里人的思维,wh ...

  2. linux下c语言写文件,Linux下C语言之文件操作

    C语言库函数的文件操作实际上是独立于具体的操作系统平台的,不管是在DOS.Windows.Linux还是在VxWorks中都是这些函数: 创建和打开的函数: FILE *fopen(const cha ...

  3. Linux下C语言之文件操作

    C语言库函数的文件操作实际上是独立于具体的操作系统平台的,不管是在DOS.Windows.Linux还是在VxWorks中都是这些函数: 创建和打开的函数:     FILE *fopen(const ...

  4. linux下c语言读写文件操作,Linux C语言 文件操作

    打开函数 fopen 的原型如下. FILE * fopen(char *filename, char *mode); 返回值:打开成功,返回该文件对应的 FILE 类型的指针:打开失败,返回 NUL ...

  5. Linux下C编程-----IO/文件操作 模拟linux ls程序显示文件系统树形结构(2)

    Linux下的IO/文件操作练习,知识虽然简单 但是往往基础容易被忽略,偶尔的练习是有必要的. 练习printf /****************************************** ...

  6. Linux下编辑并保存文件操作步骤

    墙裂建议看下,戳:vi 和 VIM的区别 详细介绍了编辑文件保存 步骤一: 打开命令控制台找到要编辑的文件,可执行命令ls看看下面有几个文件 如要编辑的文件名称为:test 步骤二: 打开文件 --命 ...

  7. linux中system.img文件,Linux下对system.img文件操作

    接下来要注意:要分清通常的Linux和ylmfos的区别 先输入指令 sudo su(通常的Linux和ylmfos都要输) 然后出现Password:,输入你的用户密码,直接输入,但是看不见,但其实 ...

  8. linux文件读写 c语言,Linux 下 C语言大文件读写(大于4G)

    以下的做法整理自论坛上的帖子. 如何create大文件 要大就非常大,1T吧. 有两种方法: 一.dd dd if=/dev/zero of=1T.img bs=1G seek=1024 count= ...

  9. linux下c语言tcp文件传输,C语言实现TCP通信

    导读 如果想要自己写一个服务器和客户端,我们需要掌握一定的网络编程技术,个人认为,网络编程中最关键的就是这个东西--socket(套接字).socket(套接字):简单来讲,socket就是用于描述I ...

最新文章

  1. mysql binlog的查询
  2. Winform中通过代码设置DevExpress的TextEdit的类型为Numbernic
  3. ABAP Netweaver, Hybris Commerce和SAP 云平台的登录认证
  4. 数据结构----二叉树叶子结点到根节点的高度计算
  5. matlab中有哪些输出函数,MATLAB中查找并输出的函数有什么
  6. linux usb无法识别,求助:USB无法识别
  7. File类与FileInfo类
  8. #Pragma 用法总结
  9. 安装phpDocumentor
  10. 中美线径对照表_常用线规号码与线径对照表
  11. CAN报文解析—案例
  12. python terminal 库_zhihu-terminal 终端版知乎客户端
  13. 认识计算机系统学反思,《认识计算机》教学反思
  14. 安卓AccountManager数据库存储位置
  15. 计算机网络2:get和post的区别
  16. 零基础重庆自考本科行政管理难吗?
  17. jdk 配置以及配置出错could not open `C:\Program Files\Java\jre7\lib\amd64\jvm.cfg' 解决方案
  18. android+学籍管理,论文基于android的学籍管理系统的设计与实现.doc
  19. 【gflags 】google gflags 使用方法
  20. 视觉树和逻辑树的概念

热门文章

  1. 后端选型中不同语言及对应的Web框架
  2. Java8-Stream-终止操作-查找与匹配
  3. Javascript 创建对象方法的总结
  4. 在zabbix web上进行监控主机配置
  5. 20个jQuery 图片及多媒体画廊插件
  6. 如何用正确的方法来写出质量好的软件的75条体会
  7. spring bean属性scope
  8. C#打印0到100的素数
  9. Weka java.lang.reflect.InvocationTargetException
  10. setInterval(callback(),time)