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;
}