windows server 2008上的c++ fopen错误
C++ fopen error on windows server 2008
我尝试使用函数fopen打开文件"job.ini"是这样的:iniffile = fopen("job.ini", "r");
调试,文件被打开,然后我尝试从文件中读取数据使用:fgets(buffer, STR_SIZE, iniFile);
当我在Windows server 2003(32位)的PC上运行(在调试模式下)这个程序时,这个工作完美。当我尝试在windows server 2008 R2(64位)上运行时,iniFile读取似乎是不正确的。循环读取文件:
do{
fgets(buffer, STR_SIZE, iniFile);
if(strncmp(buffer, section, strlen(section)) == 0) return TRUE;
}while(!feof(iniFile));
是无限的……
有人知道为什么这个工作在Windows server 2003(32位),而不是在Windows server 2008(64位)?
job.ini文件解压:
[job]
ErrorPath = e:@bcnebatchbin
Database = MYDATABASE
Userid = myuser
Password = mypassword
LanguageId = 2
谢谢
的原因可能是直到 fgets
失败后才设置文件结束标志,这意味着您将使用未定义的缓冲区内容调用strcncmp
。
我建议你把循环改成这样:
while (fgets(buffer, STR_SIZE, iniFile))
{
if (strncmp(buffer, section, strlen(section)) == 0)
return TRUE;
}
还请记住,fgets
保留了它在缓冲区中读取的换行符,这意味着section
也必须包含一个换行符,以便strncmp
匹配字符串。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 使用 fopen 而不是 Visual Studio 建议的 fopen_s 有什么错误
- 'fopen'返回格式错误的'fp'
- 在执行时收到错误"fopen': This function or variable may be unsafe."
- `fopen'和qt(mingw)的错误
- Fopen在c++中获取char *错误
- windows server 2008上的c++ fopen错误
- fopen()上的总线错误
- 错误 C4996 'fopen'未声明