C语言 将数据保存为文件 从文件读出数据

将指针指向的数据保存为文件

    int fileFd = -1;
  
	pconfig = pData;//pData保存了数据  size表示数据大小

    fileFd = open("/user/filename.bin", O_CREAT|O_RDWR|O_TRUNC, 0777);
    if (-1 == fileFd)
    {
        return ERROR;
    }
    if(write(fileFd, (char *)pconfig, size) != size)
    {
        close(fileFd);
        return ERROR;
    }
    close(fileFd);
    return OK;

从文件中读出数据内容

char *buff = NULL;
fileFd = open("/user/filename.bin", O_RDONLY, 0);
if(fileFd == -1)
{
	goto errExit;
}
//lseek(fileFd, 0, SEEK_END) 可以用来计算文件大小
fileSize = lseek(fileFd, 0, SEEK_END);
if (fileSize <= 0)
{
	goto errExit;
}
//为buf申请文件大小的内存
buff = (char *)malloc(fileSize);
if (NULL == buff)
{
	printf("No memory.\n");
	goto errExit;
}
//使用buf之前  清除地址内容
memset(buff, 0, fileSize);
leftLen = fileSize;//leftLen表示剩余还要读的数据长度
while (leftLen > 0)
{
	lseek(fileFd, readlen, SEEK_SET);
	//readlen来标志每次实际读出数据的长度
	readlen = read(fileFd, buff, fileSize);
	printf("###########readlen = %d\n", readlen);
	if (readlen < 0)
	{
		printf("read %s error\n", update_fileName);
		goto errExit;
	}
	//更新剩余长度
	leftLen -= readlen;
}

//操作读出的数据
dosthing(buff, fileSize);

errExit:
	//用完记得释放句柄和malloc申请的内存
	if(fileFd != -1)
		{
			close(fileFd);
		}
		
	free(buff);


你可能感兴趣的:(C语言 将数据保存为文件 从文件读出数据)