读取区中一条ASCII码内容 //val:B5 03 00 C4 2F E2 B6 C1 A1 C7 ....\n // val:后 最多有765个ASCII码 ,想要读到\n就结束并且把前四位ASCII码
val:去除不要,并且把下面代码sscanf的内容变成一整个for循环
```c
char *retb =strstr(line,val)
if (NULL != retb)
{
unsigned char valu;
sscanf(line + 10, "%02X", &valu);
printf(" % d\n", valu);
sscanf(line + 7, "%02X", &valu);
printf(" % d\n", valu);
sscanf(line + 4, "%02X", &valu);
printf(" % d\n", valu);
printf("%s\n", reb + 4);
}
```代码,请勿粘贴截图
想要读到\n就结束并且把前四位ASCII码
val:去掉并且把下面代码sscanf的内容变成一整个for循环
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 3000
int main() {
char line[MAX_SIZE];
if (!fgets(line, MAX_SIZE, stdin))
return 1;
char *p = line;
// Ignore first four items.
for (int i = 0; i < 4; i++)
p = strchr(p + 1, ' ');
while (p) {
int val;
sscanf(p, "%x", &val);
printf("%d ", val);
p = strchr(p + 1, ' ');
}
return 0;
}
$ gcc -Wall main.c
$ ./a.out
val:B5 03 00 C4 2F E2 B6 C1 A1 C7
47 226 182 193 161 199
这个描述有点乱哈,重新写写
char *retb = strstr(line, val);
if (NULL != retb) {
unsigned char valu;
for (int i = 10; i >= 4; i -= 3) {
sscanf(line + i, "%02X", &valu);
printf("%d\n", valu);
}
printf("%s\n", reb + 4);
}