当前位置: 技术问答>linux和unix
为什么用write向文件写不进去内容?
来源: 互联网 发布时间:2016-03-09
本文导语: 函数代码如下: #define NEWFILE (O_WRONLY) int main(void) { int outfile , temp = 0; char filename[]={"han.txt"}; char buffer[]={"han"}; if(outfile = open(filename , NEWFILE,S_IRWXU|S_IRWXG|S_IRWXO)== -1) { printf("ERROR,OOPEN ...
函数代码如下:
#define NEWFILE (O_WRONLY)
int main(void)
{
int outfile , temp = 0;
char filename[]={"han.txt"};
char buffer[]={"han"};
if(outfile = open(filename , NEWFILE,S_IRWXU|S_IRWXG|S_IRWXO)== -1)
{
printf("ERROR,OOPEN FILE FAILED!n");
exit(255);
}
{
printf("%d n",sizeof(buffer));
temp = write (outfile, buffer ,sizeof(buffer));
if(temp ==-1)
{
printf("ERROR,WRITE FAILED:n");
exit(255);
}
}
printf("file describtion is %d %d n", outfile, temp );
close(outfile);
return 0;
}
为什么代码执行完后,han.txt为0字节,而且程序没有出现任何错误???
谢谢!
#define NEWFILE (O_WRONLY)
int main(void)
{
int outfile , temp = 0;
char filename[]={"han.txt"};
char buffer[]={"han"};
if(outfile = open(filename , NEWFILE,S_IRWXU|S_IRWXG|S_IRWXO)== -1)
{
printf("ERROR,OOPEN FILE FAILED!n");
exit(255);
}
{
printf("%d n",sizeof(buffer));
temp = write (outfile, buffer ,sizeof(buffer));
if(temp ==-1)
{
printf("ERROR,WRITE FAILED:n");
exit(255);
}
}
printf("file describtion is %d %d n", outfile, temp );
close(outfile);
return 0;
}
为什么代码执行完后,han.txt为0字节,而且程序没有出现任何错误???
谢谢!
|
楼上在别乱说。
程序我没运行,不过我觉得就是写不进去。
if(outfile = open(filename , NEWFILE,S_IRWXU ¦S_IRWXG ¦S_IRWXO)== -1)
这条语句什么意思?
那些打开标志不知道什么意思,我就不说了,有个O_RDONLY就够了。假设能打开成功,会将得到的文件描述符和-1比较,比较的结果为0(因为打开成功),然后把0赋值给outfile,后面的write()实际上是往文件描述符为0的文件写入,这应该是标准输入设备吧,大概就是键盘。真没试过这样会有什么效果,呵呵。
楼主一定是C语言没学好,至少要把运算符优先级记个差不多吧。或者是看得代码太少,别人打开文件都是这样的:
if((outfile = open(filename , NEWFILE,S_IRWXU ¦S_IRWXG ¦S_IRWXO))== -1)
最好是比较是否小于0。
还要批评一下:
char filename[]={"han.txt"};
char buffer[]={"han"};
这么写应该是没有错误,不过那两对花括号实在看着不爽。
最后请楼主回复的时候说明一下那几个打开标志的意思,没看明白。
程序我没运行,不过我觉得就是写不进去。
if(outfile = open(filename , NEWFILE,S_IRWXU ¦S_IRWXG ¦S_IRWXO)== -1)
这条语句什么意思?
那些打开标志不知道什么意思,我就不说了,有个O_RDONLY就够了。假设能打开成功,会将得到的文件描述符和-1比较,比较的结果为0(因为打开成功),然后把0赋值给outfile,后面的write()实际上是往文件描述符为0的文件写入,这应该是标准输入设备吧,大概就是键盘。真没试过这样会有什么效果,呵呵。
楼主一定是C语言没学好,至少要把运算符优先级记个差不多吧。或者是看得代码太少,别人打开文件都是这样的:
if((outfile = open(filename , NEWFILE,S_IRWXU ¦S_IRWXG ¦S_IRWXO))== -1)
最好是比较是否小于0。
还要批评一下:
char filename[]={"han.txt"};
char buffer[]={"han"};
这么写应该是没有错误,不过那两对花括号实在看着不爽。
最后请楼主回复的时候说明一下那几个打开标志的意思,没看明白。