当前位置:  技术问答>linux和unix

简单的c函数读文件,windows和linux竟然结果不一样!

    来源: 互联网  发布时间:2016-03-11

    本文导语:  程序目的:希望读出[IDCODE]标签下的内容到变量idcode, 以下程序在vc里执行很好,但在linux却始终不执行 if(buffer == "[IDCODE]n")  奇怪啊!请高人指点,谢谢帮忙! int main(void) {   char buffer[256]; FILE *fp; memset(buffer,'...

程序目的:希望读出[IDCODE]标签下的内容到变量idcode,

以下程序在vc里执行很好,但在linux却始终不执行
if(buffer == "[IDCODE]n") 

奇怪啊!请高人指点,谢谢帮忙!

int main(void)
{
  char buffer[256];
FILE *fp;
memset(buffer,'',256);
int row;
fp = fopen(".//IDCODE.CFG","r");//对于读出的字符串需要比较的情况,不能用2进制读入
if( fp == NULL )
{
printf("IDCODE.CFG file can not be opened!");
return -1;
}
printf("start read confign");
while(fgets(buffer, 256, fp))
{
printf("00000n");
printf("buffer = %s", buffer);
if (buffer[0] == ';' ) 
{
printf(";;;;n");
continue;
}
if (buffer[0] == 'n') 
{
printf("11111n");
continue;
}
if(buffer == "[IDCODE]n")
{
row = 0;
printf("33333n");
while(fgets(buffer, 256, fp))
{
printf("buffer = %s n", buffer);
idcode = buffer;
printf("idcode = %s n", idcode);
row++;
printf("22222n");
if (row >=1) break;
}
continue;
}
if(buffer == "[IDCODE]")
{
row = 0;
printf("33333n");
while(fgets(buffer, 256, fp))
{
printf("buffer = %s n", buffer);
idcode = buffer;
printf("idcode = %s n", idcode);
row++;
printf("22222n");
if (row >=1) break;
}
continue;
}
if(strcmp(buffer, "[END]")==0 )
{
printf("read config end 1n");
break;
}
if(strcmp(buffer, "[END]n")==0)
{
printf("read config end 2n");
break;
}
}
fclose(fp);
return 0;
}

//------------------------------------
IDCODE.CFG文件内容为:

;采集装置配置文件
[IDCODE]
00SXDTDC
[END]

|
if(buffer == "[IDCODE]n") 
这一句简直就是乱写!
buffer是个地址,地址怎么和字符串比较!
应该用strcmp 或者 strncmp

|
楼主,我知道当有人说你的程序有问题时你可能不高兴,但是if(buffer == "[IDCODE]n")  这一句话真的的不懂C语言编程人的写法!也许你用Java习惯了这种写法,但是在C语言中这是极度错误的!至于它在VC中能不能通过,我根本不予考虑,也不值得测试!就算测试通过,这也是一种及其不稳定的做法,随机性太强了,如履薄冰啊!

|
在VC的库中,应该实是重载了operator = (char *,char *),或者隐式转换成了CString,这样字符串就可以比较,但在GCC下面就没有,所以会出现两者不同的情况.楼主在VC下可以在if(buffer == "[IDCODE]n") 处设一个断点,执行这个地方的时候,按一下Alt+8,返汇编,看看生成的汇编调用的是什么比较函数.看了之后,你就会明白,VC是做了什么动作了.

|
vc是一种对c的扩展,而linux下的c一般是最标准的,因此一段C代码要从VC移植到linux下也是有一定工作量的。

|

同意,这一行code实在是初级初级的错误。

|
JAVA里面貌似也是用 compareto() & equal()吧

    
 
 

您可能感兴趣的文章:

  • Windows和Linux下C++类成员方法作为线程函数方法介绍
  • windows下的起始函数是winmain,但是qt的主函数是main,如何在windows下启动?
  • 谁有linux下网络开发函数的说明?要再window下也可以看的!
  • 如何搭建“调用Xlib库里的函数编写X window程序”的环境?
  • 有没有在Window下运行的关于Linux函数的帮助(类似msdn)?
  • 在linux下有没有想windows下vc一样读写ini 配置文件的库或函数
  • linux下的线程中有像windows的SuspendThread和SuspendThread的函数吗?
  • linux下如何做象windows下的OnTimer一样,多个定时器用一个回调函数!!!!!!!
  • 请问linux下的c库函数跟window下的是一样的吗?
  • 请问,能在cygwin下编译基于windows定时器的函数吗?
  • Linux,aix,windows下可以查询非本进程的信号处理函数吗?
  • linux中有像dos中window()一样得分屏函数吗?
  • windows下好使的函数到linux下怎么就段错误了呢?
  • linux下如何实现 类似Windows的WaitForMultipleObjects函数的功能
  • 急!! windows 的库函数如何移植到unix下
  • Linux有没有类似Windows API的函数?如果有,哪儿有这些资料?
  • Window可以生成可执行文件的map(函数的入口地址表),Linux怎么做到这一点?详情请进!
  • 如何在linux中查到编程函数的说明,如同在windows中使用MSDN一样方便的手册?
  • Unix里编写动态库时会不会像Windows一样在源代码中含有Dllmain()类似的主函数?
  • 请问大家一个低级的问题:在windows里显示对话框的函数是AfxMessageBox("OK"),在纯java里怎么用,还要引用什么包吗?
  • 在的字符状态下要编程画曲线(类似股票的那种),应该用哪个函数库?X-windows下的呢??
  • 如何将comm 2>>的重定向结果传输到一个函数呢,作为这个函数的参数输入
  • [gdb]调用函数时,光显示返回值,并不输出结果。。。
  • 在线等!大哥们,printk函数到底怎么看他输出的结果?马上给分
  • mini2440中使用函数atan2得到错误结果
  • linux 下怎样把函数结果导出到excel
  • linux下c++调用数学函数后,编译正确但不出结果
  • snmp中的执行linux系统命令如uname的函数,其返回的结果怎么得到啊????
  • T-SQL实例 函数结果设置为列别名
  • 结果集rs,除了自己循环统计外,有什么函数直接得到返回的行数吗??
  • Linux下的crypt函数和php中的crypt函数加密结果怎么不一样啊?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Maps 成员 key_comp():返回比较元素key的函数
  • 请问:定义了2个函数,其中第一个函数要访问另外一个函数的变量,怎么处理阿?谢谢
  • C++ Maps 成员 value_comp():返回比较元素value的函数
  • 如果知道一个函数的地址或函数名,如何得到函数所在的文件名?
  • C++ MultiMaps 成员 key_comp():返回比较key的函数
  • java的数学函数在那个类中,如幂函数、指数、对数、双曲线函数等?
  • C++ MultiMaps 成员 value_comp():返回比较元素value的函数
  • 一个父类的构造函数的参数是(Applet applet),请问它的子类构造函数当中应怎样调用父类构造函数?
  • C++ STL Bitsets构造函数及成员函数解释及代码示例
  • 虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
  • C++ Strings(字符串) 成员 Constructors:构造函数,用于字符串初始化
  • 在内核的某个函数中,如何能知道是哪个用户空间的函数调用了它,以及这个用户空间函数所在的文件?
  • linux c 生成随机数srand函数和rand函数介绍及代码示例
  • 在dos下访问内存的MK_FP函数在linux下对应什么函数?int86()函数呢?
  • Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间
  • 一个静态库包含多个函数,应用程序连接了库中的某个函数,应用程序目标代码中是否还包含了该静态库中的其他函数代码?
  • Linux c++虚函数(virtual function)简单用法示例代码
  • Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • js的众多函数令小弟实在搞不清楚!哪有函数速查手册之类的软件或者书籍!谢了!比如,setInterval、clearInterval这两个函数是干什么的?
  • cityhash 32位,64位和128位介绍及函数列表
  • 虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3