当前位置: 代码迷 >> C语言 >> [求助]errno=22
  详细解决方案

[求助]errno=22

热度:756   发布时间:2007-05-28 16:16:53.0
[求助]errno=22

使用fputs()写入文件,不成功,显示错误Invalid argument,errno=22
这是什么回事啊??谢谢!!请帮帮耳。

搜索更多相关的解决方案: errno  

----------------解决方案--------------------------------------------------------
这种貌似很难看出,检查一下文件操作定位等因素
----------------解决方案--------------------------------------------------------
把你那程序贴出来看下吧,仅给这些信息没法帮你查错
----------------解决方案--------------------------------------------------------
回复:(weishj)把你那程序贴出来看下吧,仅给这些信息...
#include <stdio.h>
#include <stdlib.h>
#include<errno.h>
int main(void)
{
FILE *fp;
if((fp=fopen("aaa.txt","r+"))==NULL)
{
puts("不能进入文件");
perror("原因");
printf("errno=%d\n",errno);
exit(1);
}
system("PAUSE");
return 0;
}
fopen返回NULL。
不能进入文件,是不是还有什么步骤没做的??
使用Dev-c++编译器。

[此贴子已经被作者于2007-5-29 17:14:12编辑过]


----------------解决方案--------------------------------------------------------
fp=fopen("aaa.txt","r+")错啊
r标记为以只读方式打开文件,而+表示要建立文件;这是不是自相矛盾了
要只读打开,就直接用fp=fopen("aaa.txt","r"),前提是aaa.txt必须在你存放程序的目录中存在;
如果aaa.txt不存在,你想建立它,那么就应该用fp=fopen("aaa.txt","w+")

----------------解决方案--------------------------------------------------------
回复:(weishj)fp=fopen(
哦,谢谢啊,我的课本上写着使用“r+“,是打开一个文件,进行读写,如果文件不存在则创建它,如果存在写入数据时,是从开头写入,覆盖原来的内容。
可我运行了,并不是写入文件开头,而是末尾,看来这也是错的了。
嗯,对了,还问你个问题吧。
就是我看到有个程序是用“a+“打开的,可用了fwrite()写入,用fread()读出。
不是用二进式打开的文件能用那两个函数吗??
----------------解决方案--------------------------------------------------------

很不好意思,我五楼说错了一点,现作如下更正:
用fp=fopen("aaa.txt","r+")是以读写方式打开一个已存在的字符文件,前提是这个文件必须存在,若不存在则报错.
以这种方式打开的文件,在进行写入时,确实是覆盖了原来的内容呀.
字符文件可以用fwrite()写,用fread()读,并且在读写字符时效果跟fprintf()以及fscanf()基本一样,但当读写非字符型数据时,比如用fwrite()向文件中写入一组整形数,再用fread()把它读出来显示的却是乱七八糟的数.说明字符文件还是最好不要用fread()和fwrite()来读写

(注:以上为TC2.0下测试结果)

[此贴子已经被作者于2007-5-30 20:18:20编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案