[過去ログ]
Qiita 2 - キータぞ、来たぞ、キータだぞー (1002レス)
Qiita 2 - キータぞ、来たぞ、キータだぞー http://mevius.5ch.net/test/read.cgi/tech/1658762410/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
81: デフォルトの名無しさん [sage] 2022/09/18(日) 13:11:36.43 ID:Yf5HDNqR 『【C】初めてのC言語(17. 文字列リテラル)』の表題で > 文字列リテラルの機能 > ・ダブルクォーテーションで囲まれた文字列(文字列リテラル)は、 > 自動的に末尾に「\0」を付ける処理が入っています。 > ・ダブルクォーテーションを使わず、char型の配列として文字列を > 作る場合は終端文字として「\0」を入れます。 と書いてるのは文字列リテラルとcharの配列とcharの配列に文字列リテラル で初期化するのの区別がついていないんだろう。 > 文字列宣言でよくある誤り > 以下のように、「n文字を格納するために用意する配列の要素数がn(=nバイト)」 > だと、最後に「\0」を入れる要素が足りなくなってしまいます。 > #include <stdio.h> > > // よくある誤り > int main(void){ > const char str[5] = "Hello"; // 配列の要素数が「文字列の長さと等しい」と、終端文字を入れられない! > printf("%s\n", str); > return 0; > } char の配列の最後に'\0'を入れなきゃいけないルールもないのでこれも誤り。 http://mevius.5ch.net/test/read.cgi/tech/1658762410/81
87: デフォルトの名無しさん [sage] 2022/09/18(日) 14:48:01.26 ID:1D1ti7Vt >>81 >char の配列の最後に'\0'を入れなきゃいけないルールもないのでこれも誤り。 '\0'がないとprintf("%s\n", str) では文字列の終わりを見つけらない http://mevius.5ch.net/test/read.cgi/tech/1658762410/87
90: デフォルトの名無しさん [sage] 2022/09/18(日) 15:58:42.44 ID:aznVlwJJ >>81 0を入れなきゃいけないルールはあるぞw 文字列リテラルを使えば必ず入る 間違ってるのは記事主じゃなくお前だよw http://mevius.5ch.net/test/read.cgi/tech/1658762410/90
95: デフォルトの名無しさん [sage] 2022/09/18(日) 20:40:26.30 ID:PvmyxT+K >>93 >>81で引用されてるところは、 const char str[5] = "Hello"; とすると、最後に'\0'が入らないから 入ってると思ってprintf("%s\n", str);を使うとうまくいかない という話だからprintf("%.5s\n", str);に変えてはどうしようもないんだが ID:Yf5HDNqRには理解できないんだな >>94 printf("%s\n", str);で文字列の終わりを見つけられてるように見えることもあるけど それは実装依存うまくいっているだけだから、printf("%s\n", str);で文字列の終わりを 見つけられるということにはならないという例を挙げているわけだが ID:Yf5HDNqRには 理解できないんだな http://mevius.5ch.net/test/read.cgi/tech/1658762410/95
96: デフォルトの名無しさん [sage] 2022/09/18(日) 20:57:14.85 ID:Yf5HDNqR > >>81で引用されてるところは、 > > const char str[5] = "Hello"; とすると、最後に'\0'が入らないから > 入ってると思ってprintf("%s\n", str);を使うとうまくいかない > > という話だからprintf("%.5s\n", str);に変えてはどうしようもないんだが > ID:Yf5HDNqRには理解できないんだな 「char の配列の最後に'\0'を入れなきゃいけないルールもないのでこれも誤り。」 が読めないか理解できない人か。頭が悪いのは本人の責任じゃないし仕方ないな。 > printf("%s\n", str);で文字列の終わりを見つけられてるように見えることもあるけど > それは実装依存うまくいっているだけだから、printf("%s\n", str);で文字列の終わりを > 見つけられるということにはならないという例を挙げているわけだが ID:Yf5HDNqRには > 理解できないんだな 「と勝手に変えてるし説明もない」という話から、「変更には説明が必要」という 考えの人かな? と思って聞いたのだけど自分は例外なんですねw http://mevius.5ch.net/test/read.cgi/tech/1658762410/96
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.033s