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

回答編集履歴

2

strstr を使うコードを追加

2020/05/17 12:58

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -22,4 +22,32 @@
22
22
  **追記**
23
23
  大きな問題がありました。
24
24
  &k3e:7= が先頭にあるわけでなないのですね。
25
- 勘違いしていました。すみません。
25
+ 勘違いしていました。すみません。
26
+
27
+ **追記2**
28
+ sscanf を使うのには問題があったので、strstr を使う方法を示します。
29
+ ```C
30
+ #include <stdio.h>
31
+ #include <string.h> // strstr, memcpy
32
+
33
+ int get(const char *s, char *t)
34
+ {
35
+ const char *p = strstr(s, "&k3e:7=");
36
+ if (!p) return 0;
37
+ p += 7; // 7 = strlen("&k3e:7=");
38
+ const char *q = strstr(p, "&k87e:");
39
+ if (!q) return 0;
40
+ int n = q - p;
41
+ memcpy(t, p, n);
42
+ t[n] = '\0';
43
+ return 1;
44
+ }
45
+
46
+ int main(void)
47
+ {
48
+ char buf[1024];
49
+ if (get("&k3e:7=12345&k87e:", buf)) puts(buf);
50
+ if (get("&k3e:7=1234567&k87e:", buf)) puts(buf);
51
+ if (get("&k3e:7=abc&def&k87e:", buf)) puts(buf);
52
+ }
53
+ ```

1

問題点を追記

2020/05/17 12:58

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -17,4 +17,9 @@
17
17
  if (get("&k3e:7=abcdefg&k87e:", buf)) puts(buf);
18
18
  }
19
19
  ```
20
- ちょっと問題がありますが。
20
+ ちょっと問題がありますが。
21
+
22
+ **追記**
23
+ 大きな問題がありました。
24
+ &k3e:7= が先頭にあるわけでなないのですね。
25
+ 勘違いしていました。すみません。