回答編集履歴

2

追記

2020/11/19 02:39

投稿

DreamTheater
DreamTheater

スコア1095

test CHANGED
@@ -4,9 +4,17 @@
4
4
 
5
5
  こんな感じでしょうか?
6
6
 
7
+
8
+
9
+ (追記)
10
+
11
+ replace_crlf_to_lf関数をvoid型からsize_t型に変更して、変換後のサイズを返した方が
12
+
13
+ 呼び元で使い道があるかと。
14
+
7
15
  ```C
8
16
 
9
- void replace_crlf_to_lf(char *buf, size_t size)
17
+ size_t replace_crlf_to_lf(char *buf, size_t size) /* void型からsize_t型に変更 */
10
18
 
11
19
  {
12
20
 
@@ -22,6 +30,8 @@
22
30
 
23
31
  }
24
32
 
33
+ return size; /* 変換後のサイズを返却 */
34
+
25
35
  }
26
36
 
27
37
  ```

1

追記

2020/11/19 02:39

投稿

DreamTheater
DreamTheater

スコア1095

test CHANGED
@@ -1,3 +1,27 @@
1
1
  CR+LFだったものをLFにしたいのに、CRをLFに置き換えているだけですよね。
2
2
 
3
3
  これでは結果はLF+LFとなり2度改行してしまいます。
4
+
5
+ こんな感じでしょうか?
6
+
7
+ ```C
8
+
9
+ void replace_crlf_to_lf(char *buf, size_t size)
10
+
11
+ {
12
+
13
+ for (int n = 0; n < size - 1; n++) {
14
+
15
+ if (memcmp(buf + n, "\r\n", 2) == 0) {
16
+
17
+ (void)memmove(buf + n, buf + n + 1, size - n - 1);
18
+
19
+ size--;
20
+
21
+ }
22
+
23
+ }
24
+
25
+ }
26
+
27
+ ```