fprintf

文件的有关操作

大城市里の小女人 提交于 2020-01-20 07:59:28
注意:在对文件进行具体操作时,必须遵守"**打开(创建)——读/写——关闭"**的操作流程。 常用的文件系统函数如下: 分类 函数名 打开文件 fopen() 关闭文件 fclose() 文件定位 fseek() (改变文件位置的指针位置) rewind()(使文件位置重新置于文件开头) ftell()(返回文件指针的当前值) 文件读写 fgetc()(从文件中读取一个字符) fgetc()(把字符输出到指定文件) fgets()(读取字符串) fputs()(把字符串输出到指定文件) getw()(从指定文件中读取一个字(int 型)) putw()(把一个字(int 型)输出到指定文件 fread()(从指定文件中读取该项数据) fwrite()(把数据写到指定文件) fscanf()(把指定文件按格式输入数据) fprintf()(按指定格式将数据写到指定文件中) 一.文件的打开与关闭 1.使用 fopen() 函数即可打开文件,它的用法为: FILE *fopen(char *filename, char *mode); filename 为文件名(包括文件路径),mode为打开方式,它们都是字符串。 文件的使用方式 意义 r(read) 读 w(write) 写 a(append) 追加 t(text) 文本文件,可省略不写 b(binary) 二进制文本 + 读和写

文件操作函数(2)

不打扰是莪最后的温柔 提交于 2020-01-18 08:02:00
一、块读写 块读写主要涉及到两个函数fread和fwrite,这两个函数的原型是: unsigned int fread(void *buffer,unsigned int size,unsigned int n,FILE *fp); 从文件读取一组数据存放在首地址为buffer的内存空间中,size为一个数据块的大小,n为要读取的数据块的个数,若读取成功,则返回读取的数据的数据块的个数,否则返回0. unsigned int fwrite(const void *buffer,unsigned int size,unsigned int n,FILE *fp); 向文件中写入数据,写入成功返回写入数据块的个数,否则返回0. 块读写一般用于结构体。 注意: 1)块读写常用于结构体。 2)fread和fwrite一般成对出现,如果对文件进行写操作用的是fwrite,则用fread读取,否则可能会得到意想不到的结果。 二、格式化读写 格式化读写主要涉及到两个函数:fscanf和fprintf,两个函数的原型是 int fscanf(FILE *fp,const char *format[,argument]....); 用于从文件格式化读取数据,若读取成功,则返回读取的数据个数,否则返回-1 int fprintf(FILE *fp,const char *format[

学习SQLite之路(五) C/C++ SQLite开发实例

亡梦爱人 提交于 2020-01-17 03:27:38
  介绍一种乌班图中使用sqlite的用法,非常简单,下面的例子是在乌班图12.04中实现的: 1,先安装两个东西 : sudo apt-get install sqlite sqlite3 sudo apt-get install libsqlite3-dev // 不然可能会报 没有头文件 sqlite3.h 2,C/C++接口: 一般用到下面这三个,详情请参考sqlite官方文档。 (1) sqlite3_open(const char *filename, sqlite3 **ppDb) :     打开一个数据库连接, 返回sqlite3对象。 (2) sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg) :      解析并执行由 sql 参数所给的每个命令,直到字符串结束或者遇到错误为止。 (3) sqlite3_close(sqlite3*) :     关闭之前打开的数据库。 3、打开数据库并创建表 #include<stdio.h> #include<sqlite3.h> // 暂时先不管 static int callback(void *NotUsed, int argc, char **argv, char **azColName) { int

基于jni实现c/c++调用jar包

扶醉桌前 提交于 2020-01-12 21:29:47
一. 准备环境 #检查jdk版本 rpm -qa |grep java #如果没有openjdk-devel包,执行: yum install java-1.7.0-openjdk-devel -y #查找JAVA_HOME rpm -ql java-1.7.0-openjdk-devel-1.7.0.241-2.6.20.0.el7_7.x86_64 #将JAVA_HOME加入环境变量 echo "export JAVA_HOME='/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.241-2.6.20.0.el7_7.x86_64'" >> /etc/profile source /etc/profile 并在/etc/ld.so.conf.d目录下,创建一个jni.conf,向其中写入: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.241-2.6.20.0.el7_7.x86_64/jre/lib/amd64/server /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.241-2.6.20.0.el7_7.x86_64/jre/lib/amd64/ 执行ldconfig -v |grep libjava,如果有结果显示,就说明配置正确。 如果没配置好,可能会出现如下问题: Error

记一次传递文件句柄引发的血案 (续)

风流意气都作罢 提交于 2020-01-06 17:38:12
继 记一次传递文件句柄引发的血案 之后,这个 demo 又引发了一次血案,现录如下。 这次我是在 linux 上测试文件句柄的传递,linux 上并没有 STREAMS 系统, 因此是采用 unix domain socket 的 sendmsg/recvmsg 中控制消息部分来传递句柄的。 代码的主要修改部分集中于发送 fd 与接收 fd 处,一开始代码是这样的,运行良好。 spipe_fd.c 1 #define MAXLINE 128 2 #define RIGHTSLEN CMSG_LEN(sizeof(int)) 3 #define CREDSLEN CMSG_LEN(sizeof(struct CREDSTRUCT)) 4 #define CONTROLLEN (RIGHTSLEN+CREDSLEN) 5 6 int send_fd (int fd, int fd_to_send) 7 { 8 struct iovec iov[1]; 9 struct msghdr msg; 10 struct cmsghdr *cmptr = NULL; 11 char buf[2]; 12 13 iov[0].iov_base = buf; 14 iov[0].iov_len = 2; 15 16 msg.msg_iov = iov; 17 msg.msg_iovlen = 1;

15、【C语言基础】错误处理、递归

心已入冬 提交于 2020-01-02 05:00:42
C 错误处理 C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。在发生错误时,大多数的 C 或 UNIX 函数调用返回 1 或 NULL,同时会设置一个错误代码 errno ,该错误代码是全局变量,表示在函数调用期间发生了错误。 您可以在 errno.h 头文件中找到各种各样的错误代码。 所以,C 程序员可以通过检查返回值,然后根据返回值决定采取哪种适当的动作。开发人员应该在程序初始化时,把 errno 设置为 0,这是一种良好的编程习惯。0 值表示程序中没有错误。 errno、perror() 和 strerror() C 语言提供了 perror() 和 strerror() 函数来显示与 errno 相关的文本消息。 perror() 函数显示您传给它的字符串,后跟一个冒号、一个空格和当前 errno 值的文本表示形式。 strerror() 函数,返回一个指针,指针指向当前 errno 值的文本表示形式。 让我们来模拟一种错误情况,尝试打开一个不存在的文件。您可以使用多种方式来输出错误消息,在这里我们使用函数来演示用法。另外有一点需要注意,您应该使用 stderr 文件流来输出所有的错误。 1 #include <stdio.h> 2 #include <errno.h> 3 #include <string.h> 4 5

C 错误处理

戏子无情 提交于 2020-01-02 05:00:07
C 错误处理 C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。在发生错误时,大多数的 C 或 UNIX 函数调用返回 1 或 NULL,同时会设置一个错误代码 errno ,该错误代码是全局变量,表示在函数调用期间发生了错误。您可以在 <error.h> 头文件中找到各种各样的错误代码。 所以,C 程序员可以通过检查返回值,然后根据返回值决定采取哪种适当的动作。开发人员应该在程序初始化时,把 errno 设置为 0,这是一种良好的编程习惯。0 值表示程序中没有错误。 errno、perror() 和 strerror() C 语言提供了 perror() 和 strerror() 函数来显示与 errno 相关的文本消息。 perror() 函数显示您传给它的字符串,后跟一个冒号、一个空格和当前 errno 值的文本表示形式。 strerror() 函数,返回一个指针,指针指向当前 errno 值的文本表示形式。 让我们来模拟一种错误情况,尝试打开一个不存在的文件。您可以使用多种方式来输出错误消息,在这里我们使用函数来演示用法。另外有一点需要注意,您应该使用 stderr 文件流来输出所有的错误。 #include <stdio.h> #include <errno.h> #include <string.h> extern int

C语言宏定义相关

[亡魂溺海] 提交于 2019-12-29 01:19:01
写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义。。。。。。 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。 typedef unsigned char boolean; /* Boolean value type. */ typedef unsigned long int uint32; /* Unsigned 32 bit value */ typedef unsigned short uint16; /* Unsigned 16 bit value */ typedef unsigned char uint8; /* Unsigned 8 bit value */ typedef signed long int int32; /* Signed 32 bit value */ typedef signed short int16; /* Signed 16 bit value */ typedef signed char int8; /* Signed 8 bit value */ //下面的不建议使用 typedef

隐马尔科夫(HMM)的Matlab实现

偶尔善良 提交于 2019-12-06 14:36:26
说明: 1. 本文实现了PRML一书第13章的隐马尔科夫(HMM)算法,并与K-means聚类、GMM模型聚类进行了对比。当然,HMM的用处远不止是聚类; 2. 非职业码农,代码质量不高,变量命名也不规范,凑合着看吧,不好意思。 隐马尔科夫模型(HMM)是我一直想弄清楚的一种模型。可能是上学时随机过程只考了60分,心有不甘。 模型和算法本身不赘述了,详见PRML第13章。直接看结果,把隐变量z作为类别编号,HMM可用于聚类。这里可以看到,由于HMM利用了序列跳转信息(也就是马尔科夫特性),可以获得比混合高斯模型(GMM,http://blog.csdn.net/foreseerwang/article/details/75222522)更为准确的结果。 Matlab输出: **************************************************************** **************************************************************** K-means聚类计算,结果将作为HMM初始值...... K-means聚类算法结束 **************************************************************** GMM聚类计算中......

MATLAB鼠标事件

旧街凉风 提交于 2019-12-06 12:17:07
来源:https://blog.csdn.net/weixin_39090239/article/details/80586930 前记: 人机交互的方式--键盘开关、鼠标、触摸屏、体感传感器(Kinect、leap motion)等的使用大大促进人与机器的交流过程。 这里记录鼠标事件与MATLAB的结合,为后期机器人仿真控制打下基础---如鼠标直接拖动机器人运动(像很多机器人仿真软件里的作用一样,如Robotstudio、soldworks、proe\core、Adams等 )。 1、鼠标画矩形 代码功能:运行代码在出现的figure窗口,点击鼠标画出矩形 k = waitforbuttonpress; point1 = get(gca,'CurrentPoint'); % button down detected finalRect = rbbox; % return figure units point2 = get(gca,'CurrentPoint'); % button up detected point1 = point1(1,1:2); % extract x and y point2 = point2(1,1:2); p1 = min(point1,point2); % calculate locations offset = abs(point1-point2)