当前位置: 技术问答>linux和unix
fwrite 居然返回错误,怎么回事,在线等待,解决立即给分
来源: 互联网 发布时间:2015-09-30
本文导语: 我写了一个小程序,其中要打开一个日志文件,向里面写一些东西,但是fwrite返回1,用perror打印:Numerical result out of range 什么意思啊?我的程序如下: #include int main() { FILE* fp = NULL; char* str = "haha";...
我写了一个小程序,其中要打开一个日志文件,向里面写一些东西,但是fwrite返回1,用perror打印:Numerical result out of range 什么意思啊?我的程序如下:
#include
int main()
{
FILE* fp = NULL;
char* str = "haha";
int count = 0;
fp = fopen("log.tsk","w+");
if(!fp)
{
return;
}
count = fwrite(str,strlen(str),1,fp);
perror("error");
return (0);
}
程序运行创建了log.tsk文件,但是打印出Numerical result out of range 的错误,怎么回事,请指点,谢谢
#include
int main()
{
FILE* fp = NULL;
char* str = "haha";
int count = 0;
fp = fopen("log.tsk","w+");
if(!fp)
{
return;
}
count = fwrite(str,strlen(str),1,fp);
perror("error");
return (0);
}
程序运行创建了log.tsk文件,但是打印出Numerical result out of range 的错误,怎么回事,请指点,谢谢
|
这里有几个建议希望能够帮助你:
1。 首先创建调试文件 最好用 "w"
2. FILE *fp;
创建文件指针的时候最好不要先赋NULL
3。 打开文件指针后要fclose指针
4。 在fwrite中最好使用sizeof()函数来取得对象空间
不要用strlen函数
5。fwrite函数第一个参数 最好定义成 数组或者结构 然后引用数租名或者结构名
不要直接使用指针
希望能够帮助你
这样再试一下
1。 首先创建调试文件 最好用 "w"
2. FILE *fp;
创建文件指针的时候最好不要先赋NULL
3。 打开文件指针后要fclose指针
4。 在fwrite中最好使用sizeof()函数来取得对象空间
不要用strlen函数
5。fwrite函数第一个参数 最好定义成 数组或者结构 然后引用数租名或者结构名
不要直接使用指针
希望能够帮助你
这样再试一下
|
其实并没有错,在perror()前应该判断fwrite()的返回值,如果返回值错误才需要调用perror(),或者在fwrite()前把errno清0也不会有问题。
|
94
|
改成
fp = fopen("log.tsk","a+");
fp = fopen("log.tsk","a+");
|
FILE *fp;
fp = fopen("log.txt","a+");
if (fp == NULL)
{
//错误输出语句
fclose(fp);
}
fprintf(fp,"Hello world!");
fclose(fp);
fp = fopen("log.txt","a+");
if (fp == NULL)
{
//错误输出语句
fclose(fp);
}
fprintf(fp,"Hello world!");
fclose(fp);
|
给你个参考:
http://www.pgsqldb.org/pgsqldoc-7.0c/x18242.htm
http://www.pgsqldb.org/pgsqldoc-7.0c/x18242.htm
|
以前一直没close吧!
|
程序没错误啊
又见人品问题:)
又见人品问题:)