写一个整数到文件
#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include<string.h>
#include<stdlib.h>
// int open(const char *pathname, int flags);
// int open(const char *pathname, int flags, mode_t mode);
// ssize_t write(int fd, const void *buf, size_t count);
// 含义:将缓冲区buf指针指向内存的数据,写count个字节,写进fd,fd是打开文件的文件描述符。
// 成功写入返回写入的个数,返回的值是正整数。
//ssize_t read(int fd, void *buf, size_t count);
// 含义:从fd这个文件读取count个字节到缓冲区buf指针指向的内存
int main()
{
int fd;//文件描述符
int n_write;//写入文件内容的个数
int n_read;//读取文件内容的个数
int data=100;
int data2=0;
fd=open("./file1",O_RDWR);//只读只写的方式打开文件
if(fd<0){//如果返回值是负数,文件不存在,打开失败
printf("open file fail\n");
}
n_write=write(fd,&data,sizeof(int));//把整数写进文件
if(n_write!=-1){//返回值不是负数,为正整数,写入文件成功
printf("write data success\n");
}
lseek(fd,0,SEEK_SET);
n_read=read(fd,&data2,sizeof(int));//把buf缓冲区的内容读取到read缓冲区
if(n_read!=-1){//读取成功
printf("read:%d,read data success\n",data);
}
close(fd);//关闭文件
return 0;
}
写一个结构体到文件
#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include<string.h>
#include<stdlib.h>
// int open(const char *pathname, int flags);
// int open(const char *pathname, int flags, mode_t mode);
// ssize_t write(int fd, const void *buf, size_t count);
// 含义:将缓冲区buf指针指向内存的数据,写count个字节,写进fd,fd是打开文件的文件描述符。
// 成功写入返回写入的个数,返回的值是正整数。
//ssize_t read(int fd, void *buf, size_t count);
// 含义:从fd这个文件读取count个字节到缓冲区buf指针指向的内存
struct Test
{
int a;
char c;
};
int main()
{
int fd;//文件描述符
int n_write;//写入文件内容的个数
int n_read;//读取文件内容的个数
struct Test data={100,'a'};//字符要加单引号
struct Test data2;
fd=open("./file1",O_RDWR|O_TRUNC);//只读只写的方式打开文件
if(fd<0){//如果返回值是负数,文件不存在,打开失败
printf("open file fail\n");
}
n_write=write(fd,&data,sizeof(struct Test));//把结构体写进文件
if(n_write!=-1){//返回值不是负数,为正整数,写入文件成功
printf("write data success\n");
}
lseek(fd,0,SEEK_SET);//回到光标头
n_read=read(fd,&data2,sizeof(struct Test));//把buf缓冲区的内容读取到read缓冲区
if(n_read!=-1){//读取成功
printf("read:%d,%c,read data success\n",data.a,data.c);
}
close(fd);//关闭文件
return 0;
}
写一个结构体数组到文件
#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include<string.h>
#include<stdlib.h>
// int open(const char *pathname, int flags);
// int open(const char *pathname, int flags, mode_t mode);
// ssize_t write(int fd, const void *buf, size_t count);
// 含义:将缓冲区buf指针指向内存的数据,写count个字节,写进fd,fd是打开文件的文件描述符。
// 成功写入返回写入的个数,返回的值是正整数。
//ssize_t read(int fd, void *buf, size_t count);
// 含义:从fd这个文件读取count个字节到缓冲区buf指针指向的内存
struct Test
{
int a;
char c;
};
int main()
{
int fd;//文件描述符
int n_write;//写入文件内容的个数
int n_read;//读取文件内容的个数
struct Test data[2]={{100,'a'},{101,'c'}};//字符要加单引号
struct Test data2[2];
fd=open("./file1",O_RDWR|O_TRUNC);//只读只写的方式打开文件
if(fd<0){//如果返回值是负数,文件不存在,打开失败
printf("open file fail\n");
}
n_write=write(fd,&data,sizeof(struct Test)*2);//把结构体数组写进文件
if(n_write!=-1){//返回值不是负数,为正整数,写入文件成功
printf("write data success\n");
}
lseek(fd,0,SEEK_SET);//回到光标头
n_read=read(fd,&data2,sizeof(struct Test)*2);//把buf缓冲区的内容读取到read缓冲区
if(n_read!=-1){//读取成功
printf("read:%d,%c,read data success\n",data[0].a,data[0].c);
printf("read:%d,%c,read data success\n",data[1].a,data[1].c);
}
close(fd);//关闭文件
return 0;
}