X



Qiita 2 - キータぞ、来たぞ、キータだぞー

■ このスレッドは過去ログ倉庫に格納されています
2022/07/26(火) 00:20:10.32ID:XQj8UtG3
Hello hackers !
Qiitaは、エンジニアリングに関する知識を記録・共有するためのサービスです。
コードを書いていて気づいたことや、自分がハマったあの仕様について、
他のエンジニアと知見を共有しましょう ;)

https://qiita.com/

Qiita(キータ)は、Incrementsが運営するプログラミング情報のナレッジコミュニティ。
2016年現在で日本最大のプログラマーコミュニティとされている[1]。

https://internet.watch.impress.co.jp/docs/news/1025972.html

前スレ Qiita
https://mevius.5ch.net/test/read.cgi/tech/1542357242/
94デフォルトの名無しさん
垢版 |
2022/09/18(日) 20:13:17.43ID:Yf5HDNqR
>>92
勝手に変えてる>>88の説明はあるのかな
2022/09/18(日) 20:40:26.30ID: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には
理解できないんだな
2022/09/18(日) 20:57:14.85ID: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
2022/09/18(日) 21:04:50.53ID:Yf5HDNqR
>   const char str[5] = "Hello";

が正しいか正しくないかというとC言語的には正しい。
このオブジェクトについて文字列終端に'\0'があることを期待するのが間違いなだけ。
文字列リテラルの話ではないのでそう題するのも間違い。
2022/09/18(日) 22:25:24.72ID:JTgtpdd/
>const char str[5] = "Hello"

これは、ヌル終端文字列じゃないので文字列処理できない
2022/09/18(日) 22:32:33.05ID:JTgtpdd/
Ruby の女神・池澤あやかが言ってるけど、

大学の授業で、C をやるのは無意味。
挫折確率99%・時間の無駄で、何も作れない。
ただプログラミングを嫌いになるだけ。
数年やっても、正常に動くものを作れない

彼女は慶応大学時代に、山陰地方の合宿でRuby on Rails を学んだ
2022/09/18(日) 22:45:20.80ID:JTgtpdd/
これはヌル終端文字列じゃないので文字列処理できない。
最後にヌルが入っていない
char str[3] = "abc";

ヌル終端文字列は以下
char str[3+1] = "abc";
char str[] = "abc";

char *str = "abc";
2022/09/19(月) 04:59:17.86ID:HpZUMwaY
>>99
挫折確率99%はない
日本人はアホだと思ってるけどそこまでアホじゃないw
Cは簡単だろ
2022/09/20(火) 00:10:31.58ID:qO247GN/
単位取れる程度に理解はするだろうけど
その後使う確率は0.01%しかないという意味でやるだけ無駄
2022/09/20(火) 00:23:16.16ID:Xl8EXKtF
> 大学の授業で、C をやるのは無意味。
> 挫折確率99%・時間の無駄で、何も作れない。
> ただプログラミングを嫌いになるだけ。
> 数年やっても、正常に動くものを作れない

どっかの誰かが自分のお客さんにそういう話をしてたとして
真に受ける奴が鴨ってだけの話だ罠。
2022/09/20(火) 00:56:13.57ID:OoIkmPQF
ヌル文字要らないと言ってるやつは普段どんなプログラム書いてんだよw
要るだろ
そんなもんコミット許可下りないぞ
2022/09/20(火) 01:02:55.41ID:Xl8EXKtF
charの配列は最後の要素に'\0'が入ってないといけないと言ってる人は
charを文字専用の型とか思ってるのかな
2022/09/20(火) 07:03:47.81ID:OoIkmPQF
文字列リテラルの話をしてるのにアホなごまかし方だなw
2022/09/20(火) 07:56:08.24ID:OoIkmPQF
https://qiita.com/yasu_teco/items/e8db933ac4f647166996
古い記事だがひっでーなこれ
コメントもガン無視
108デフォルトの名無しさん
垢版 |
2022/09/20(火) 08:51:17.28ID:2fXkGtCj
池澤あやかは馬鹿まで読んだ
2022/09/20(火) 08:51:48.70ID:a5Fm2nSF
別に例ならああいった変数名避けないけどな。
とくにstrなんかはローカル変数なら使うよ。

その関数やメソッド抜けたら普通にstr使えるから
なにも問題はない。
むしろグローバル関数に被る変数名関数内でも必ず回避してる奴なんかいるんかw
110デフォルトの名無しさん
垢版 |
2022/09/20(火) 09:08:28.55ID:2fXkGtCj
ID:JTgtpdd/
は説明が下手だから負けてるな
111デフォルトの名無しさん
垢版 |
2022/09/20(火) 09:09:42.32ID:2fXkGtCj
>>104
Win32API 使ったこと無いのか?
112デフォルトの名無しさん
垢版 |
2022/09/20(火) 12:23:37.12ID:u0JQyBQ0
Pythonなかなかやべー言語だな変数名が関数をシャドーイングするとかマジかよ
中世のプログラム言語だな
2022/09/20(火) 12:32:44.50ID:PbMF5IYh
シャドーイングしない言語ってあるの?w
114デフォルトの名無しさん
垢版 |
2022/09/20(火) 12:42:34.93ID:u0JQyBQ0
>>113
https://paiza.io/projects/yxgZVHrTgeNQEBXRcQZQ6w
115デフォルトの名無しさん
垢版 |
2022/09/20(火) 12:43:31.03ID:u0JQyBQ0
変数と関数は違うものだからなあ別で管理してくれよって思うよなあ
2022/09/20(火) 12:49:35.43ID:DvwW4DO+
>>106
> 文字列リテラルの話をしてるのに

charの配列の初期化の話してるのを理解できないバカが紛れ込んでたか
2022/09/20(火) 12:49:59.27ID:PbMF5IYh
細かいことはどうでもいい
シャドーイングが問題になるようなプログラミングはしない主義
118デフォルトの名無しさん
垢版 |
2022/09/20(火) 12:51:48.72ID:u0JQyBQ0
変数を書くときに名前が被らないように全部の関数を覚えておかないといけないんだろ
関数作るときは既存の変数を全部調べて被ってないことを確認しないといけないんだろ
これ無理ゲーじゃね、Pythonのプログラムがバグだらけなのってこれが原因じゃね
2022/09/20(火) 12:53:59.59ID:PbMF5IYh
林太ーを使う
120デフォルトの名無しさん
垢版 |
2022/09/20(火) 12:55:16.01ID:u0JQyBQ0
林太はそういうの一番わからないだろ、あいつは元気だけが取り柄のやつ
121デフォルトの名無しさん
垢版 |
2022/09/20(火) 12:57:04.33ID:u0JQyBQ0
せめて.NETのように変数と関数でケーススタイルを変えるとかすればいいのに
2022/09/20(火) 13:09:41.52ID:vCpD9zCE
>>116
お前が理解できてないぞw
文字列リテラルで初期化するときはだいたい文字列として扱うときに決まってんじゃんw
2022/09/20(火) 13:21:03.10ID:HlTpV5j1
python は祈りを書き留めるものだから
2022/09/20(火) 13:40:24.68ID:3+JQhY/d
>>118
その程度も覚えられないならプログラマ向いてないよ
125デフォルトの名無しさん
垢版 |
2022/09/20(火) 13:47:59.73ID:u0JQyBQ0
>>124
しくみで解決しようとしない方がプログラマに向いてないと思う
126デフォルトの名無しさん
垢版 |
2022/09/20(火) 13:49:02.39ID:u0JQyBQ0
Pythonの開発者はプログラマに向いてない
GoogleではPythonがたくさん使われているからGoogleはたくさんプログラマに向いてない
127デフォルトの名無しさん
垢版 |
2022/09/20(火) 13:49:55.57ID:u0JQyBQ0
Googleは結局電通だからな
128デフォルトの名無しさん
垢版 |
2022/09/20(火) 17:48:41.14ID:9uDlQujI
関数でも変数でも自由に上書き
__private でも _protected でも自由に上書き
うby よりずっと黒魔術に便利な言語
129デフォルトの名無しさん
垢版 |
2022/09/20(火) 19:18:35.00ID:t6sg4YsO
間違ってる記事があったとして、なんでそこまでどうにかしたいんだ?って思う
正義感?
最悪初心者が真に受けたとしても別になんも困らんだろ

発信力ないプロが嫉妬してるとしか思えないな
発信力のないプロの記事ってくそつまんねえんだからしょうがないよ
2022/09/20(火) 19:27:14.16ID:YGiBFn1k
間違ってないからここまで言い合いが続いてるわけでな
2022/09/20(火) 21:51:42.04ID:PsJADa91
むしろ問題は無いよ
「ド素人ほど知ったかする」
「にわかなやつほど語りたがる」
ってのはすでに知れ渡ってるから心配ない
ド素人がまたしょうもない嘘記事書いたってだけ
2022/09/20(火) 22:36:26.93ID:/Bvo4oH4
Ruby の仕様で嫌いなのは、
無引数の関数f( ) を、f だけで呼び出せること

この仕様のせいで、
f = 1
と代入すると、ローカル変数になってしまう。shadowing

これがややこしい
2022/09/20(火) 22:46:32.99ID:3+JQhY/d
>>125
自分が覚えられないのを人が与えた仕組みのせいにしてる時点で向いてないと言ってるんだよ
134デフォルトの名無しさん
垢版 |
2022/09/20(火) 22:56:39.16ID:u0JQyBQ0
>>133
Pythonの関数がいくつあるか言ってみろ、はい言えないなじゃあお前も覚えられないじゃないか
135デフォルトの名無しさん
垢版 |
2022/09/20(火) 22:56:50.01ID:u0JQyBQ0
そういうとこやぞ
136デフォルトの名無しさん
垢版 |
2022/09/20(火) 23:04:21.80ID:9uDlQujI
builtins を上書きですね判ります
2022/09/21(水) 08:23:01.72ID:tmH48Op1
>>122
> 文字列リテラルで初期化するときはだいたい文字列として扱うときに決まってんじゃんw

なんだ、決まってないと解っててゴネてんのかw
2022/09/21(水) 08:28:10.32ID:KMcq8I6w
>>137
うわぁ
お前典型的な何もやったことのないネット弁慶だなw
2022/09/21(水) 18:07:52.08ID:J3mLsQcd
>>132
JSのアロー関数でもそうなるんだっけ?
大体デフォの function 構文の this 周りのガバさがあかんねん…
140デフォルトの名無しさん
垢版 |
2022/09/21(水) 18:12:44.70ID:E8IgYMeH
'\0'終端を前提とした標準および非標準ライブラリのいくつかの関数が機能しなくなるだけで
'\0'終端を前提としていない文字列処理を行う関数は普通に使える
'\0'終端は必須ではない
2022/09/21(水) 18:45:00.10ID:VZ2CqY7n
>>140
そうかそうか
お前はゆたぼんと同じ知能程度だな
小学校いかなくても少し標準的な社会生活に不都合が生じるだけだもんな
2022/09/21(水) 19:30:54.68ID:L/aRoDaz
https://qiita.com/nkojima/items/d87ce0cb15dd1a26f21a
> 文字列にまつわる業界ルール
> ・「C言語の文字列に関する業界ルール」として、以下の2つのルールが挙げられていました。
> ・先頭要素から順に1文字ずつ文字コードを格納して文字列を表す。
> ・最後の文字の直後には「文字コード0の文字」を必ず格納し、それ以降のメモリ空間は利用しない。

おかしなルールのある業界がどこのことかはわからんが>>141はそこの人らしい
2022/09/21(水) 19:45:31.81ID:JbDYfiYQ
\0使わない縛りでやってる変人もいるんだなとしか
2022/09/21(水) 19:46:19.70ID:XBvNXDFA
qiitaのクソ記事は害悪だよな
ツイッターで偽科学とか偽医療みたいなん吹いて回ってるやつと同じ
2022/09/21(水) 19:49:43.84ID:XBvNXDFA
\0はchar配列をヌル文字終端文字列として使うときだけ使うだけ
char配列自体はそもそも単なる配列
文字列リテラルで初期化できると言ってもそれもまた用途の一つ
2022/09/21(水) 19:51:40.77ID:XBvNXDFA
char label[] = "0123456789abcdef";
putchar(label[n % 16]);
こんなんするとき\0いらんでしょ
2022/09/21(水) 19:55:00.26ID:Wtb51HDf
文字列を格納する配列なら、

char s[] = "漢字";

でsのサイズが2+\0 = 3になって欲しいわ。
2022/09/21(水) 20:05:51.97ID:JbDYfiYQ
>>146
どこでそんなクソコード使うのか想像持つかんな
2022/09/21(水) 21:21:22.03ID:3FNiQLn5
> どこでそんなクソコード使うのか想像持つかんな

自分の狭い知識だけがすべての人ならではの感想
2022/09/21(水) 21:36:57.47ID:XBvNXDFA
例が悪かったかなw

コード例無しで言うと
文字通りchar配列で使うときはアスキーコードの最初の方使ったりするでしょ
シリアル通信に使うバッファとして配列を使うとき
別にそんとき\0なんて必要でもなんでもない
2022/09/21(水) 21:38:25.49ID:y9XFckwg
なってほしいもなにも
wchar_t a[]=L"漢字"
でaの_countofは3でしょ。

文字がnull終端ではないC#みたいなのは2系の値になるだろけど。
2022/09/21(水) 21:54:56.27ID:8neOlhRN
>>147
3だぞ
2022/09/21(水) 21:56:06.76ID:8neOlhRN
>>150
使わねーよそんな計算で出るもの
もしかしてcharが数値型だと知らないのか?w
2022/09/22(木) 01:54:25.67ID:b3cAfEVs
char hoge(unsigned char x)
{
  x %= 16;
  return (x < 10) ? '0' + x : 'a' + x - 10;
}

char piyo(unsigned char x)
{
  static const char hex[16] = "0123456789abcdef";
  x %= 16;
  return hex[x];
}

↑を1億回づつ実行するベンチマークを戯れにやってみた
https://godbolt.org/z/bnxqeoMs9
155デフォルトの名無しさん
垢版 |
2022/09/22(木) 11:15:43.05ID:u9/ouAZs
>>147
3+3+\0=7 になってくれ
156デフォルトの名無しさん
垢版 |
2022/09/22(木) 11:17:20.26ID:u9/ouAZs
>>150
逆に文字列中に \0 を含んでさらに文字が続くことも普通にあるんだが
2022/09/22(木) 12:51:30.90ID:NPe2h5TE
> 使わねーよそんな計算で出るもの

必要に応じて書き方選んだりできない人かな>>153
2022/09/22(木) 14:23:10.03ID:0ndVcmp/
>>157
必要ないことに手段を選ぶ必要なんかないだろ
しなきゃいいんだから
2022/09/22(木) 16:34:50.62ID:87G6fv6g
「必要に応じて」が理解できないのか場数踏んでないのかどっちかな
2022/09/22(木) 18:13:55.34ID:q+NntLXQ
不要なものを必要と思ってるあたり圧倒的な経験不足だな
2022/09/22(木) 19:02:49.54ID:AONuxSGu
> 使わねーよそんな計算で出るもの

ライブラリでできることを「計算で出る」って車輪の再発明推奨かwニワカww

char hoge(unsigned x)
{
  char s[2];
  sprintf(s, "%x", x % 16);
  return s[0];
}
162154
垢版 |
2022/09/22(木) 19:49:05.98ID:b3cAfEVs
昨夜は寝ぼけてた。
C言語の規格では'0'〜'9'の文字コードは連続する決まりなので
0〜9 の値を '0'〜'9' へ変換するのに '0' + x は正しいが、
'a'〜'f'は連続する決まりがないので 10〜15 の値を 'a'〜'f' へ
変換するのに 'a' + x - 10 は正しくない。

char hoge(unsigned char x)
{
  x %= 16;
  switch (x) {
  default: return '0' + x;
  case 10: return 'a';
  case 11: return 'b';
  case 12: return 'c';
  case 13: return 'd';
  case 14: return 'e';
  case 15: return 'f';
  }
}

に訂正する。

https://godbolt.org/z/3zKrqj46e
163デフォルトの名無しさん
垢版 |
2022/09/22(木) 20:02:19.87ID:zQ5LgsLA
C言語めんどくさいなJavaは良いぞ
2022/09/22(木) 20:12:59.40ID:OqPLRehN
>>153


>>156
> 逆に文字列中に \0 を含んでさらに文字が続くことも普通にあるんだが

あるよね
charを配列で使うだけだからどんな使い方しても自由って話
165デフォルトの名無しさん
垢版 |
2022/09/23(金) 01:11:23.46ID:gD4It3Ab
char exts[] = ".txt\0.py\0.c\0.cpp\0\0";
みたいな文字列観ると発狂する人か
2022/09/23(金) 01:46:58.40ID:RwiIrTPM
>>153
> 使わねーよそんな計算で出るもの

ほうほうどうやるの?
2022/09/23(金) 07:05:20.97ID:pFWb2JI+
>>166
マジかw
168デフォルトの名無しさん
垢版 |
2022/09/23(金) 09:26:51.51ID:esyqbAqH
>>86,90
>>129
ああ「暗黙のルール」という表現が気に入らないのか
確かに C にそんなものは存在しない
それぞれのインターフェースに応じたプロトコルがある
そしてそれは厳格に守らなければならない
初心者向けの説明に暗黙なんて生易しいもので御茶を濁してはいけない

こういうのが「#include <stdio.h> はおまじない(キリっ」にも噛みついて来るんだろうな
169デフォルトの名無しさん
垢版 |
2022/09/23(金) 09:29:29.12ID:esyqbAqH
>>165
その用途なら
char exts[] = ".txt\0.py\0.c\0.cpp\0";
が定番
2022/09/23(金) 10:08:00.77ID:4W75W0wl
>>169
文字列定数のまま使う場合とchar[]に入れる場合じゃ違うだろ。
171デフォルトの名無しさん
垢版 |
2022/09/23(金) 10:16:26.22ID:Fz6l9635
元記事のnkojimaって人は

【Java】char型はint型にキャストできる
https://qiita.com/nkojima/items/d358f99efa71655911ea
> char ch = '1';
> ですが、char型の「1」をint型にキャストすると、なぜか「49」になってしまいます。

こんなこと書いてる人だからお察しなw
ド素人なのになぜ「【C】初めてのC言語」みたいな記事を書くのか
なんのためにこれを書いてなんのためにネットにあげるのか不可解
2022/09/23(金) 10:19:46.34ID:di/Vtu7L
>>171
初心者が勉強したことを書いてネットにあげることは不可解でない
インプットしたものをアウトプットしたくなるよね
アウトプットしたら学習効率がいいからやってみたらいいよ
記録に残って後日見返せる
173デフォルトの名無しさん
垢版 |
2022/09/23(金) 10:22:29.01ID:Fz6l9635
教わるほうの立場が
教えようとしたらイカンやろって思うけどねw
2022/09/23(金) 10:27:17.39ID:di/Vtu7L
Qiitaのいいところは初心者の記事を熱心に読み込んで間違いを指摘してくれるおまえのような良い人がいることだね
学習効率がとてもいい
175デフォルトの名無しさん
垢版 |
2022/09/23(金) 10:32:12.71ID:7gKq4Utr
それは素晴らしい。
2022/09/23(金) 10:33:26.45ID:pFWb2JI+
>>174
自分の学習のために検索結果汚染する自己中多すぎ
グループ学習しろよ
と思うがお前らボッチなんだよな
177デフォルトの名無しさん
垢版 |
2022/09/23(金) 10:35:29.48ID:7gKq4Utr
Qiitaなんてその程度のものだと思いました。
178デフォルトの名無しさん
垢版 |
2022/09/23(金) 10:36:12.39ID:Fz6l9635
ド素人記事はド素人に悪影響だと思うけどねw
それでいいならみんなで幸せになってください
179デフォルトの名無しさん
垢版 |
2022/09/23(金) 10:36:17.10ID:7gKq4Utr
むしろQiitaはそのために作られた気配を感じる。
180デフォルトの名無しさん
垢版 |
2022/09/23(金) 10:36:33.16ID:NfRrjGHo
>>171
良い記事じゃん
181デフォルトの名無しさん
垢版 |
2022/09/23(金) 10:37:25.28ID:7gKq4Utr
自分も良い記事だと感じました。
見てないけど。
182デフォルトの名無しさん
垢版 |
2022/09/23(金) 10:37:36.15ID:NfRrjGHo
>>176
Googleに言えよ
183デフォルトの名無しさん
垢版 |
2022/09/23(金) 10:38:29.22ID:7gKq4Utr
>>179
悪態ついてないで、巡回行ってきてください。
まだまだ記事があなたの検閲を待っています。
184デフォルトの名無しさん
垢版 |
2022/09/23(金) 10:39:13.86ID:7gKq4Utr
>>182
ですよね。
検索エンジンの問題を私たちのせいにしないでほしいですね。
185デフォルトの名無しさん
垢版 |
2022/09/23(金) 10:39:25.90ID:Fz6l9635
むしろ最近はsejukuだよな
ド素人先生によるありがたいド素人塾
やべーわ
186デフォルトの名無しさん
垢版 |
2022/09/23(金) 10:40:54.01ID:NfRrjGHo
sejukuまで行くと面白いわ
2022/09/23(金) 10:54:06.60ID:0i4VSa+b
>>178
それ
ド素人は良い記事と悪い記事の区別がつかないから無茶苦茶なのを本気にしてよくわからないまま広める
2022/09/23(金) 10:55:39.96ID:0i4VSa+b
>>185
sejukuはこれでずいぶんマシになった方
数年前は間違ってない記事を見つける方が大変だった
189デフォルトの名無しさん
垢版 |
2022/09/23(金) 11:55:47.62ID:Fz6l9635
定義のはっきりしたもんを
ド素人様に一回預けて
曲解、自己解釈、拡大解釈でぐちゃぐちゃにしてから
みんなに召し上がってもらおうという素敵な試みやん
190デフォルトの名無しさん
垢版 |
2022/09/23(金) 12:55:26.40ID:esyqbAqH
ぐぐるときは必ず
-sejuku
-techacademy
-chiebukuro
-KENTA
を付けてる
2022/09/25(日) 19:16:23.11ID:6wI0gbs/
-KENTAワロタw
2022/09/28(水) 21:09:20.90ID:9HUYdTWA
https://qiita.com/yoshiichn/items/25c0e25bb034825b5802
> 作り始めは数が少なかったのでリポジトリの1ブランチですべてのプロジェクトのコードを管理していました。
もうここから意味がわからない
2022/09/28(水) 21:12:46.36ID:LuZgrd2u
読んでて頭痛くなってきた
これでgit詳しいってその会社大丈夫か?
しかも社名出して記事書いてるし
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況