首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

sscanf怎么取出"0xFFBC"字符串

2013-06-25 
sscanf如何取出0xFFBC字符串?一个字符串“5,10,str,0xFFBC”.我用sscanf来截取:int a,bchar c[16]char d

sscanf如何取出"0xFFBC"字符串?
一个字符串“5,10,str,0xFFBC”.
   我用sscanf来截取:

    int a,b;
    char c[16];
    char d[16];

     sscanf(buf, "%d, %d, %s, %s ", &a, &b, c, d);
   printf("the date is %d, %d, %s, %s.\n",a,b,c,d)

    sscanf(buf, "%d, %d, %s, %x ", &a, &b, c, d);
  printf("the date is %d, %d, %s, %x.\n",a,b,c,d)

   但上面的两种方法都截取不出 “0xFFBC”。
   请问应该如何写?
[解决办法]
字符串的处理使用sscanf会很麻烦,比如,也是字符串的也部分,会和前一个字符串连接起来,你这就是str,0xFFBC当成一个字符串传给C了,所以d就不知道什么东西了。
字符串的处理一般用strstr来搜索定位
[解决办法]

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int  main(void )
{
int a,b;
char c[16];
char d[16];
char * p;
char buf[128] = "5, 10, str,0xFFBC";

p=strstr(buf,"str,");
if(p)
{
p=p+4;
strcpy(d, p);
printf("BUF:%s\n",d);
}


return 0;


附个代码吧。
[解决办法]
(补充楼上,按错了)
指针指向目标字符串的首地址
[解决办法]


#include <stdio.h>
#include <stdlib.h>

int main ()
{
    int a, b, d;
    char c[16];
    
char buf[] = "5, 10, str, 0xFFBC";

sscanf(buf, "%d, %d, %[^,], 0x%X", &a, &b, c, &d);
printf("the date is %d, %d, %s, 0x%X.\n", a, b, c, d);

sscanf(buf, "%*d, %*d, %*[^,], %s", c);

printf("c=%s\n", c);

return 0;
}

[解决办法]
别用%s来调用scanf/sscanf,内存溢出风险。

热点排行