char *p;
ptr = ans;
其中ans为下面直
+CMGS: 151OK?+CMTI: "SM",4?+CMGL: 4,"REC UNREAD","+8613591441979",,"04/08/13,10:26:28+00"
gggggggggggggggggggggg
现在用
while((ptr = strstr(ptr, "+CMGL:")) != NULL)
怎么有错误那,找不到"+CMGL"的位置,,应该怎么写那,,,?
内存地址是这样的
///////////////////////////////////////////////
0A 2B 43 4D 47 53 3A  .+CMGS:
00E38E53  20 31 35 31 0D 0A 0D   151...
00E38E5A  0A 4F 4B 0D 8A 0D 0A  .OK....
00E38E61  2B 43 4D 54 49 3A 20  +CMTI: 
00E38E68  22 53 4D 22 2C 34 0D  "SM",4.
00E38E6F  8A 0D 0A 2B 43 4D 47  ...+CMG
00E38E76  4C 3A 20 34 2C 22 52  L: 4,"R
00E38E7D  45 43 20 55 4E 52 45  EC UNRE
00E38E84  41 44 22 2C 22 2B 38  AD","+8
00E38E8B  36 31 33 35 39 31 34  6135914
00E38E92  34 31 39 37 39 22 2C  41979",
00E38E99  2C 22 30 34 2F 30 38  ,"04/08
00E38EA0  2F 31 33 2C 31 30 3A  /13,10:
00E38EA7  32 36 3A 32 38 2B 30  26:28+0
00E38EAE  30 22 0D 0A 67 67 67  0"..ggg
00E38EB5  67 67 67 67 67 67 67  ggggggg
00E38EBC  67 67 67 67 67 67 67  ggggggg
00E38EC3  67 67 67 67 67 0D 0A  ggggg..

解决方案 »

  1.   

    strstr可能不能判断到哪里结束,自己做一个for循环,一个字节,一个字节的比较肯定可以.
      

  2.   

    while((ptr = strstr(ptr, "+CMGL:")) != NULL)
    改成:
    while((ptrCpy = strstr(ptr, "+CMGL:")) == NULL)
      

  3.   

    strstr只能找到第一个位置。所以用while 用处不大。除非在while里面又有新的字串。
    而且,判定条件不对,应该是
      pdest = strstr( string, str );
       if( pdest != NULL )
    ptr = strstr(ptr, "+CMGL:")) != NULL 表示BOOL bFlag = (ptr = strstr(ptr, "+CMGL:")))?TRUE:FALSE;
    bFlag != NULL好像是在判断赋值是否成功,应该判断指针是否为空