teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

16進数文字列の長さが分からない時のコードを追加

2020/06/16 02:40

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -9,4 +9,18 @@
9
9
  sscanf(s, "%2x%2x%2x%2x%2x%2x", a, a+1, a+2, a+3, a+4, a+5);
10
10
  for (int i = 0; i < 6; i++) printf("a[%d] = %d\n", i, a[i]);
11
11
  }
12
- ```
12
+ ```
13
+ **追記**
14
+ 16進数文字列の長さが分からない時、
15
+ ```C
16
+ #include <stdio.h>
17
+
18
+ int main(void)
19
+ {
20
+ char s[] = "1ABF2454F185";
21
+ int a[100], n = 0;
22
+ while (n < 100 && sscanf(s + n*2, "%2x", a + n) == 1) n++;
23
+ for (int i = 0; i < n; i++) printf("a[%d] = %d\n", i, a[i]);
24
+ }
25
+ ```
26
+ 16進数文字列の長さが奇数の時、最後は 1文字の値になります。