strstr 函数用了之后有错误??

[复制链接]
6556|8
 楼主| lswlc0502 发表于 2012-3-14 16:34 | 显示全部楼层 |阅读模式
我用ICC_AVR 编译器

#include"string.h"

void main()
{
   unsigned char buffer[];
   if( strstr((char *) buffer, "OK") > 0 )
   {
       break;
    }
}

大概的原理就是这样,但编译出了一个问题.
operands of > have illegal types 'pointer to char and int'

大侠们.这是一个什么问题啊.我找了好多的资料,但是还是没有解决.实在没有办法了.到论坛上面问问.谢谢大侠们.
lxyppc 发表于 2012-3-14 16:44 | 显示全部楼层
operands of > have illegal types 'pointer to char and int'

使用了非法的类型进行>操作,"一个是指向char的指针类型,一个是int类型"
 楼主| lswlc0502 发表于 2012-3-14 16:58 | 显示全部楼层
嗯? 这个问题,要怎么改啊.两个数据都是char 型数据啊,
西安农民工 发表于 2012-3-14 18:30 | 显示全部楼层
你还不懂strstr函数的用法就冒然使用,先查一下怎么用。
你的程序有两处错误:
1、给buffer初始化。
2、长这么大我还没见过,if中还可以加break。

修改:
#include"string.h"

void main()
{
   unsigned char buffer[] = "aaaaOKbbbbb";//初始化buffer
   if( strstr((char *) buffer, "OK") > 0 )
   {
       ;    //写你的处理函数,不写的话,可以加个分号就行。
    }
}

评分

参与人数 1威望 +1 收起 理由
lswlc0502 + 1 很给力!

查看全部评分

sunhq02 发表于 2012-3-15 08:36 | 显示全部楼层
你的buffer没有分配空间
至少得写成 buffer[XX], XX为buffer的容量
 楼主| lswlc0502 发表于 2012-3-15 09:15 | 显示全部楼层
哦,有的,我里的buffer 是写成了 buffer[400] ,也还是不行.
lxyppc 发表于 2012-3-15 09:29 | 显示全部楼层
strstr函数的返回值是char*类型,而小于操作不能用来比较指针和int值,所以出错了
你要想知道strstr的函数返回值是否合法,应该用!=号或是==号比较
if( strstr((char *) buffer, "OK") != NULL )
jiemnij 发表于 2012-3-15 10:56 | 显示全部楼层
7楼的回答在点子上
lxyppc 发表于 2012-3-15 11:22 | 显示全部楼层
7楼的回答在点子上
jiemnij 发表于 2012-3-15 10:56

我以为二楼就结束了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部