我尝试使用函数fopen打开文件“job.ini”就是这样: iniFile = 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:\@\bcne\batch\bin\
Database = MYDATABASE
Userid = myuser
Password = mypassword
LanguageId = 2
谢谢
答案 0 :(得分:0)
可能的原因是 fgets
失败后之前未设置文件结束标志,这意味着您将调用{{ 1}}带有未定义的缓冲区内容。
我建议你把循环更改为:
strcncmp
另请注意,while (fgets(buffer, STR_SIZE, iniFile))
{
if (strncmp(buffer, section, strlen(section)) == 0)
return TRUE;
}
会将其读取的换行符保留在缓冲区中,这意味着fgets
也必须包含section
的换行符以匹配字符串。