write函数会末尾写0(write返回0)

http://www.itjxue.com  2023-01-28 22:08  来源:未知  点击次数: 

write()函数的返回值是什么

write有两种用法。一种是:

int write(int handle, void *buf, int nbyte);

handle 是文件描述符;

buf是指定的缓冲区,即指针,指向一段内存单元;

nbyte是要写入文件指定的字节数;返回值:写入文档的字节数(成功);-1(出错)

write函数把buf中nbyte写入文件描述符handle所指的文档,成功时返回写的字节数,错误时返回-1.

另一种是:write(const char* str,int n)

str是字符指针或字符数组,用来存放一个字符串。n是int型数,它用来表示输出显示字符串中字符的个数。

write("string",strlen("string");表示输出字符串常量

C语言write函数的返回值问题

大多数情况下,write成功后返回的写入字节数都等于你传入的长度。

但是如果你要写的长度超过了的文件的最大可能时,比方说,你的磁盘还剩下128个字节,这时你向磁盘上的某个文件一次性写512个字节,返回值就是128,只有前128个字节成功写入。

再比如,你用write写的不是一个普通文件,而是设备文件/socket等,那也可能返回值小于你指定的值,这就可能是具体设备的限制等,比如写入的数量超过了缓冲大小等。

c++ write函数问题

write(char*,length)是以二进制字节的形式写入文件的,而用记事本打开的文件是以GBK或者是unicode编码格式解码文件内容的,

一般情况下,读文件时的编码格式和写入文件的时的编码格式一样,才能显示正确。

如果需要61029的显示效果,不妨这样

ofstream file("date.txt");

filedate.mondaydate.daydate.year;

怎么用WriteFlie函数问题

ASCII字符串写进去,不应当是乱码.

下面,用MS VC++ 编译器,按 C 语言 写法,没问题。

#includewindows.h

#includestdio.h

#define DWORD unsigned long int

void main()

{

HANDLE hfile;

char a[]={"abcde"};

char b[]={"12345"};

DWORD dw;

DWORD dwPtr; // 按 C 语言 写法,在这里声明

hfile=CreateFile("D:\\jeff\\v.dat",GENERIC_READ | GENERIC_WRITE,

FILE_SHARE_WRITE | FILE_SHARE_READ,0,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);

WriteFile(hfile,a,sizeof(a),dw,NULL);

dwPtr=SetFilePointer(hfile,0,NULL,FILE_END);

WriteFile(hfile,b,sizeof(b),dw,NULL);

CloseHandle(hfile);

}

(责任编辑:IT教学网)

更多

推荐linux服务器文章