社区
C语言
帖子详情
求救!! C的 fopen函数报错!!errno=22
libingwai
2007-12-11 10:39:19
我在程序多次打开了一个文件,第一次循环时可以正确打开文件,但是到第二次循环时就报errno=22
请问这是啥问题呀???????
...全文
3612
13
打赏
收藏
求救!! C的 fopen函数报错!!errno=22
我在程序多次打开了一个文件,第一次循环时可以正确打开文件,但是到第二次循环时就报errno=22 请问这是啥问题呀???????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
thexihexi0
2011-07-28
打赏
举报
回复
同求啊,搞了大半天了,还是有问题。。。
wangyaosuper
2008-11-25
打赏
举报
回复
在进行共享内存操作的时候报errno = 22是什么意思?
libingwai
2007-12-11
打赏
举报
回复
什么意思?
wei801004
2007-12-11
打赏
举报
回复
共享打开
libingwai
2007-12-11
打赏
举报
回复
我这个程序一开始是在高版本的gcc上跑的,编译执行都没问题
但是现在放到低版本的gcc上就报这个错了,可以编译,但是执行不了
chlaws
2007-12-11
打赏
举报
回复
同意,代码贴出来看看
还有一点,第1次打开的时候应该是用写的模式 "w"
后面打开形式就应该不能用"w",否则覆盖了原来的内容,就读取不到里面的信息了
SimonFu
2007-12-11
打赏
举报
回复
l_fp = fopen(filename,"r");
if( l_fp == NULL )
{
vtcp_log("文件不存在或者存在错误,请检查[%s]\n",filename);
return 1;
}
fclose(l_fp);
要清除错误标志位吧
libingwai
2007-12-11
打赏
举报
回复
我也顶一下
libingwai
2007-12-11
打赏
举报
回复
我只把报错的部分,和主程序帖上来了,请大家帮帮忙
就是在第二次调用scan_rpt_var这个函数的时候报错,说是参数非法
l_read_fp = fopen(_read_file, "r");
if( l_read_fp == NULL)
{
vtcp_log("ddddopen read_file error\n");
return -1;
}就是在这里报错errno=22
main()
{
/* 检查文件是否顺利打开 */
l_fp = fopen(filename,"r");
if( l_fp == NULL )
{
vtcp_log("文件不存在或者存在错误,请检查[%s]\n",filename);
return 1;
}
fclose(l_fp);
TRACE
ret=Com_cur_no_code_Dec_Sel(g_pub_tx.reply,"use_ind='Y'");
if(ret)
{
sprintf(acErrMsg,"sql error!! %s,%d [%d]",__FILE__,__LINE__,ret);
WRITEMSG
goto ErrExit;
}
while(1)
{
memset(&g_com_cur_no_code,0x00,sizeof(struct com_cur_no_code_c));
ret=Com_cur_no_code_Fet_Sel(&g_com_cur_no_code,g_pub_tx.reply);
if(ret==100) break;
else if(ret){
sprintf(acErrMsg,"sql error!! %s,%d [%d]",__FILE__,__LINE__,ret);
WRITEMSG
goto ErrExit;
}
/* 根据机构号循环处理报表 */
for(i=0; i<brno_nums; i++)
{
memset(&g_brno_tmp, 0x00, sizeof(struct com_branch_c));
init_prt_val(&g_prt_val);
strcpy(g_filename,l_str_tmp);
/* 创建文件 */
TRACE
ret = cre_file(&g_brno[i], g_filename);
if( ret ) goto ErrExit;
vtcp_log("[%s][%d]\n",__FILE__,__LINE__);
g_brno_tmp = g_brno[i];
/* 第一次扫描报表,记录所有的变量 */
ret = scan_rpt_var(filename);
vtcp_log("[%s][%d]\n",__FILE__,__LINE__);TRACE
if( ret ) goto ErrExit;
/*report 校验计算公式和变量 */
if(cal_form_nums != prt_val_nums)
{
vtcp_log("变量与计算公式定义错误: 数量不符\n");
vtcp_log("cal_form_nums=[%d]\n",cal_form_nums);
vtcp_log("prt_val_nums=[%d]\n",prt_val_nums);
continue;
}
if( cmp_cal_val() ) continue;
/* 计算出变量的值 */
cal_g_prt_val();
/* 打印报表 */
ret = make_rpt(filename,g_fp);
if(ret) goto ErrExit;
fclose(g_fp);
if(fp)
fclose(fp);
vtcp_log("[%s][%d]提交数据库!\n",__FILE__,__LINE__);
vtcp_log("机构[%s]完成\n",g_brno_tmp.br_no);
}
}
Com_cur_no_code_Clo_Sel();
}
/**************************************************************
开始扫描报表的所有变量
input :
char *_read_file 格式文件名
FILE *_prt_fp 报表文件句柄
output
0 -- success
1 -- fail
**************************************************************/
int scan_rpt_var(char *_read_file)
{
char l_str_tmp[STR_TMP_LEN];
FILE *l_read_fp;
int l_ret;
/* 打开格式文件 */
l_read_fp = fopen(_read_file, "r");
if( l_read_fp == NULL)
{
vtcp_log("ddddopen read_file error\n");
return -1;
}
vtcp_log("[%s][%d]\n",__FILE__,__LINE__);
while( !feof(l_read_fp) )
{
memset(l_str_tmp, 0x00, sizeof(char));
fgets( l_str_tmp, BUFLEN+1, l_read_fp );
del_fore_space(l_str_tmp);
del_after_space(l_str_tmp);
/*** 如果行首为 # 或 // ,表示本行为注释 ***/
if( l_str_tmp[0]=='#' || !strncmp( l_str_tmp, "//", 2 ) ) continue;
/*** 如果空行,则跳过 ***/
if( strlen(l_str_tmp)==0||l_str_tmp[0]=='\0'||l_str_tmp[0]== '\n')
continue;
if( !strncmp(l_str_tmp,"body",4) )
{
/*** 开始扫描报表 ***/
scan_rpt_body(l_read_fp);
}else
{
continue;
}
}
vtcp_log("[%s][%d]\n",__FILE__,__LINE__);
return 0;
}
ckt
2007-12-11
打赏
举报
回复
贴代码看看
xaobao
2007-12-11
打赏
举报
回复
帮顶一下吧
libingwai
2007-12-11
打赏
举报
回复
已经关闭了都,但还是报错呀??
Treazy
2007-12-11
打赏
举报
回复
多次打开同一个文件,如果在打开一个文件后没有关闭
那之后的打开文件会导致很多问题!建议1个打开对应1个关闭
fopen
_s / fprintf
报错
stream!=nullptr
bug 用
fopen
_s()
函数
打开文件,然后用fprintf()
函数
向文件写入内容。 跟踪调试显示,
fopen
_s()
函数
没有
报错
,fprintf()
函数
报错
,stream!=nullptr。 原来是fprintf()所用的文件指针为空,而
fopen
_s()得到的文件指针恰恰为空。 原因 这是由所要打开的文件被占用导致的。...
C语言出现stream!=NULL情况的错误
err=
fopen
_s(&fd,addon,"rb" ); fseek(fd,0,0); fread(Buff,sizeof(double),SIZEDATA,fd); 类似于这种读文件的时候,出现了这个情况,查出的原因是数据没有找到,一般来讲出现这种问题的时候考虑你的数据格式是否正确,路径是否正确,然后再查看我们程序的问题。 另外,可以在读之前判断
VS2017中
fopen
等
函数
报错
解决方法
文章目录VS2017中
fopen
()
函数
报错
解决方法问题解决方法 VS2017中
fopen
()
函数
报错
解决方法 问题 用VS2017写C语言代码的时候,代码中使用了
fopen
()
函数
,调试之后
报错
如下: error C4996: ‘
fopen
’: This function or variable may be unsafe. Consider using
fopen
_s instead. ......
Expression:stream!=nullptr
VS2019编程时遇到这个问题:Expression:stream!=nullptr 发现是这里的问题 FILE* fp1;
errno
_t err1; err1 =
fopen
_s(&fp1, "F:\\Project_module\\multidim.raw", "wb"); if (fp1 == NULL) { cout << "文件无法正常打开" << endl; } 我是编程时需要在matlab中测试精度,所以这个文件在matlab中也打开了,但
C语言
fopen
函数
- C语言零基础入门教程
目录 一.
fopen
函数
简介 二.
fopen
函数
实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.
fopen
函数
简介 C 语言
fopen
函数
表示以指定的模式,打开一个文件,
函数
声明如下: /* *描述:使用指定的模式打开或者读写指定的文件 * *参数: * [in] filename:文件路径 * [in] mode:模式 * *返回值:打开文件成功返回文件句柄(FILE类型指针),失败返回NULL */ FIL
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章