当前位置: 技术问答>linux和unix
文件操作的程序,帮我看看
来源: 互联网 发布时间:2016-02-09
本文导语: 这个程序想实现从标准输入输入一行,就写入文件一行,直到输入quit为止,可是为什么程序编译通过,运行也不打印错误,但是就是写不进文件呢?而且还有奇怪的回显,你输入一行,它回显一行,加个奇怪的小尾巴. #include #inc...
这个程序想实现从标准输入输入一行,就写入文件一行,直到输入quit为止,可是为什么程序编译通过,运行也不打印错误,但是就是写不进文件呢?而且还有奇怪的回显,你输入一行,它回显一行,加个奇怪的小尾巴.
#include
#include
#include
#include
#include
#include
#include
#include
#define NEWFILE (O_WRONLY|O_CREAT|O_TRUNC)
#define SIZE 10
int main(void)
{
int outfile;
char filename[] = "test.dat";
char buffer[SIZE];
if(outfile=open(filename, NEWFILE, 0640)==-1)
{
printf("Error, Open file failed!n");
exit(255);
}
gets(buffer);
while(strcmp(buffer,"quit"))
{
if(write(outfile, buffer, sizeof(buffer))==-1)
{
printf("ERROR,WRITE FAILED: n",sys_errlist[errno]);
exit(255);
}
gets(buffer);
}
close(outfile);
return 0;
}
#include
#include
#include
#include
#include
#include
#include
#include
#define NEWFILE (O_WRONLY|O_CREAT|O_TRUNC)
#define SIZE 10
int main(void)
{
int outfile;
char filename[] = "test.dat";
char buffer[SIZE];
if(outfile=open(filename, NEWFILE, 0640)==-1)
{
printf("Error, Open file failed!n");
exit(255);
}
gets(buffer);
while(strcmp(buffer,"quit"))
{
if(write(outfile, buffer, sizeof(buffer))==-1)
{
printf("ERROR,WRITE FAILED: n",sys_errlist[errno]);
exit(255);
}
gets(buffer);
}
close(outfile);
return 0;
}
|
这个问题就是不断gets后,没有赋字符串结束符所导致!
你用标准的C函数去操作文件试试
int main(void)
{
char filename[10] = "test.dat";
char buffer[SIZE];
FILE *fp;
if(fp=fopen(filename,'w')==NULL)
{
printf("Error, Open file failed!n");
exit(255);
}
gets(buffer);
while(strcmp(buffer,"quit"))
{
if(fwrite(fp, buffer, sizeof(buffer))==-1)
{
printf("ERROR,WRITE FAILED: n",sys_errlist[errno]);
exit(255);
}
buffer[0]='';
gets(buffer);
}
fclose(fp);
return 0;
}
你用标准的C函数去操作文件试试
int main(void)
{
char filename[10] = "test.dat";
char buffer[SIZE];
FILE *fp;
if(fp=fopen(filename,'w')==NULL)
{
printf("Error, Open file failed!n");
exit(255);
}
gets(buffer);
while(strcmp(buffer,"quit"))
{
if(fwrite(fp, buffer, sizeof(buffer))==-1)
{
printf("ERROR,WRITE FAILED: n",sys_errlist[errno]);
exit(255);
}
buffer[0]='';
gets(buffer);
}
fclose(fp);
return 0;
}
|
if(outfile=open(filename, NEWFILE, 0640)==-1)
的问题,==的优先级比=高,
改成
if((outfile=open(filename, NEWFILE, 0640))==-1)
就可以了
的问题,==的优先级比=高,
改成
if((outfile=open(filename, NEWFILE, 0640))==-1)
就可以了