- 论坛徽章:
- 0
|
本帖最后由 yaoming1718 于 2010-12-09 23:30 编辑
本人初学linux 看《linux环境下c编程指南》一书 对书中例子有疑问,向大家请教
代码如下
利用write函数实现一个write_buffer函数,创建文件“test.txt”,从键盘输入字符串写入文件,成功后打开文件为乱码,求解答?
直接用write函数的话,打开test.txt则能看到正常显示。
#include<sys/types.h>
#include<sys/stat.h>
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<unistd.h>
#include<fcntl.h>
#define NEWFILE (O_WRONLY|O_CREAT|O_TRUNC)
#define SIZE 80
int write_buffer(int fd,char*buf,int count)
int main(void)
{
int outfile;
char filename[] ="test.txt";
char buffer[SIZE];
if((outfile=open(filename,NEWFILE,0640))==-1)
{
printf("ERROR,OPEN FILE FAILED!\n");
exit(255);
}
while(strncmp(buffer,"quit",4)
{
fgets(buffer,SIZE-1,stdin);
if(write_buffer(outfile,buffer,SIZE)==-1)
{
printf("ERROR,WRITE FAILED!");
exit(255);
}
}
close(outfile);
return 0;
}
int write_buffer(int fd,char*buf,int count)
{
int i,n;
char write_buf[SIZE];
int write_offset = 0;
for(i=0;i<count;++i)
{
write_buf[write_offset++] = *buf++;
if(write_offset == SIZE)
{
write_offset = 0;
n = write(fd,write_buf,strlen(write_buf));
if(n<=SIZE);
return 0;
if(n==-1)
return -1;
}
return -1;
}
} |
|