回答編集履歴

2

原因の推測から表現まで変な感じになってしまっているので、無難そう(!?)な個所以外は打ち消し

2022/02/27 09:22

投稿

jimbe
jimbe

スコア12670

test CHANGED
@@ -1,6 +1,7 @@
1
- '\'+1文字は"エスケープシーケンス"です。コンパイラによってコンパイル環境にあった文字もしくは文字列に変換されます。
1
+ '\\'+1文字は"エスケープシーケンス"です。~~コンパイラによってコンパイル環境にあった文字もしくは文字列に変換されます。~~
2
2
 
3
- Windows では \n は 0x0d,0x0a という 2 バイトに変換され、つまり文字では無く文字列になりますので「'」で囲むのは適さない…ということになるのではないでしょうか。文字列の中から改行を探すのでしたら strstr で ”\n” をパラメータとしてみては如何でしょう。
3
+ ~~Windows では \n は 0x0d,0x0a という 2 バイトに変換され、つまり文字では無く文字列になりますので「'」で囲むのは適さない…ということになるのではないでしょうか。~~
4
+ 文字列の中から改行を探すのでしたら strstr で ”\n” をパラメータとしてみては如何でしょう。
4
5
 
5
- '\0' のほうは *p が char 型なのに対し '\0' が int に解釈されて large とか…見た目のまま 2 文字なのでエラーとか…あんまり無さそうですが(デフォルトの)コンパイルオプションでそのような設定になっているのかもしれません。
6
+ ~~'\0' のほうは *p が char 型なのに対し '\0' が int に解釈されて large とか…見た目のまま 2 文字なのでエラーとか…あんまり無さそうですが(デフォルトの)コンパイルオプションでそのような設定になっているのかもしれません。~~
6
7
  いっそ `*p = (char)0;` にしてみるのは如何でしょうか。

1

修正

2022/02/27 04:09

投稿

jimbe
jimbe

スコア12670

test CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  Windows では \n は 0x0d,0x0a という 2 バイトに変換され、つまり文字では無く文字列になりますので「'」で囲むのは適さない…ということになるのではないでしょうか。文字列の中から改行を探すのでしたら strstr で ”\n” をパラメータとしてみては如何でしょう。
4
4
 
5
- '\0' のほうは *p が char 型なのに対し '\0' が int に解釈されて large とか…あんまり無さそうですが(デフォルトの)コンパイルオプションでそのような設定になっているのかもしれません。
5
+ '\0' のほうは *p が char 型なのに対し '\0' が int に解釈されて large とか…見た目のまま 2 文字なのでエラーとか…あんまり無さそうですが(デフォルトの)コンパイルオプションでそのような設定になっているのかもしれません。
6
- char にキャストしてみるは如何でしょうか。
6
+ いっそ `*p = (char)0;` にしてみるは如何でしょうか。