读书人

linux c 写文件有关问题

发布时间: 2013-11-08 17:52:14 作者: rapoo

linux c 写文件问题
从缓冲区接受的数据,要保存到文件怎么弄的。。下面代码哪儿有问题,咋写出来不对呢



int clouddisk_WriteFile(const char *lpszFileName,const char *lpszSource,int nLen)
{
int hFile = 0;

if (-1 == (hFile = open(lpszFileName,O_RDWR | O_CREAT,S_IRUSR | S_IWUSR | S_IXUSR)))
{
return 0;
}

size_t nWriteCount = 0;
size_t nCount = nLen;
size_t nSize = write(hFile,lpszFileName,nLen);
nWriteCount = nSize;
while (nWriteCount < nCount)
{
nSize = write(hFile,lpszSource + nWriteCount,nLen - nWriteCount);
nWriteCount += nSize;
}

close(hFile);
return 1;
}


[解决办法]
1、单步调试看看数据是到哪里不对了;
2、一般更常用fopen/fclose/fread/fwrite等函数。

引用:
从缓冲区接受的数据,要保存到文件怎么弄的。。下面代码哪儿有问题,咋写出来不对呢



int clouddisk_WriteFile(const char *lpszFileName,const char *lpszSource,int nLen)
{
int hFile = 0;

if (-1 == (hFile = open(lpszFileName,O_RDWR
[解决办法]
O_CREAT,S_IRUSR
[解决办法]
S_IWUSR
[解决办法]
S_IXUSR)))
{
return 0;
}

size_t nWriteCount = 0;
size_t nCount = nLen;
size_t nSize = write(hFile,lpszFileName,nLen);
nWriteCount = nSize;
while (nWriteCount < nCount)
{
nSize = write(hFile,lpszSource + nWriteCount,nLen - nWriteCount);
nWriteCount += nSize;
}

close(hFile);
return 1;
}


[解决办法]
先单步调试。

引用:
我直接这样调用写数据都不行

const char *lpszCookie = "的挖挖的那我的那我你的哦啊温暖的哦啊温暖的哦啊温暖的哦安稳的哦那我的哦你啊";

clouddisk_WriteFile("./123.txt",lpszCookie,strlen(lpszCookie));

[解决办法]

在哪里出错,打印一下errno

这样写肯定数据不对,前面一部分会被文件名./123.txt替换掉的。

[解决办法]
乱码并不代表一定是错的,也可能是编码方式的问题,直接看二进制数据最准确。

引用:
我看 write 的返回值的确是我传进去的大小,但是我打开写好的文件一堆乱码

读书人网 >C语言

热点推荐