C言語なら俺に聞け 146

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 839f-AnMQ)
垢版 |
2018/04/30(月) 04:47:37.50ID:XX4FB8lc0
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/


C言語なら俺に聞け 144
https://mevius.5ch.net/test/read.cgi/tech/1514025223/

次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
-
※前スレ
C言語なら俺に聞け 145
http://mevius.5ch.net/test/read.cgi/tech/1519046038/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2018/05/24(木) 22:47:15.80ID:6yspu/tD0
>>125
Cとは言ってないけどここはCスレだし
2018/05/24(木) 22:49:10.73ID:KKfGUbdHd
自分がC++の半分を理解できる知能を持たないなら、Tcl/Tkでもやっとけ
2018/05/24(木) 22:54:40.75ID:yJx+fTIp0
とりあえず初心者向けにガイドラインを出すと、

・とにかく新しい物を使え

に尽きる。Cは歴史も長いから当然色々あるのだが、
GUIも色々試行錯誤していて、結果的に昔のは基本的にゴミだ。
当たり前だが新しい奴はいろいろ改善されているわけでね。

そして初心者なら自分で判断出来る能力はないのだから、他人の判断能力にすがれ。
これも当たり前だがみんなそれぞれの状況で「最適解だ」と考えた物を使ってる。
結果的に、割と妥当な物が採用される確率が高くなる。
んで、今時みんなWebでやってるだろ。理由は簡単、一番簡単だからだよ。

Web系()が馬鹿ばっかりなのは事実だが、
逆に言えば、本当に簡単にGUIが実現出来るからこそ、それで成り立ってる。
これは本当にJavaScript/HTML/CSSをやれば分かる。
これまでのGUIは何だったんだ?と思えるくらい間抜けなほど簡単に色々出来るから。
2018/05/24(木) 22:58:33.48ID:yJx+fTIp0
>>124,126
普通に読んだら>>49は初心者だよ。自分で判断する能力がないんだから。
で、そいつに「CでGUI」みたいなミスリードするな、って話だよ。
2018/05/24(木) 23:06:49.88ID:6yspu/tD0
いくら説明してもダメなバカっているんだな...
スレタイ100回声に出して読んでから出直してこい
2018/05/24(木) 23:14:43.05ID:oUXC6l2s0
「どーしてもCでやりたいのなら○○だが……
 そもそも論で、CでGUIコントロールを記述するのはめんどくせーから余所言語学んだほうが近道」
2018/05/24(木) 23:29:36.95ID:4h4bAGNya
>>123
CXって何?もしかしてC++/CXのこと?
2018/05/24(木) 23:35:00.83ID:yJx+fTIp0
>>133
とりあえずお前は何がオススメだと思っているの?
まずそれを聞こうか。
2018/05/24(木) 23:59:23.49ID:4h4bAGNya
>>134
>>49の前提条件が分からないとオススメしようがないな
プログラミング未経験ならそもそもGUIの勉強の前にやることあるだろうと思うし
C言語を勉強してその延長上でかつWindowsならWin32APIでもいいだろうし
2018/05/25(金) 00:07:25.24ID:DRvoryYO0
>>132
とりあえずは同意だが、俺はCではGUIは学べないと思ってるんだよ。


Linusは「Cでもオブジェクト指向は出来る」と言うだろ。確かにこれも事実だが、
これは「既にオブジェクト指向を完全に理解しているから、文法サポート無しでも出来る」のであって、
「何も分かってない奴がいきなりCで出来る」ようにはならないと思うんだよ。

GUIもそうで、今現在最先端なのはJavaScript/HTML/CSSだと俺は思っているから、俺はそれを勧めてる。
それで正しいGUIが出来るようになれば、あとは昔のCのゴミみたいなGUIフレームワークでも何とかなるだろうさ。
しかしGUIのイロハも分かっていない奴に昔の=今から考えたら間違ったフレームワークでは、
間違った方向にしか進めないと思ってる。

これは逆説的だがJavaScripterがOOPを全く理解出来ていないことからも言える。
JavaScriptは全般的にOOPではないので、抽象クラスでコードを一本化ってのが割と出来ない。
PHPはもっと悲惨で、言語内に色々矛盾があるから普通にコードを書いていても躓く。
あれでは上達しないのも分かる。当然OOP(継承)の利点も理解出来ないし。

OOPと同様にGUIでド定番なのはMVCだが、逆にこれをお前らは理解してないだろ。
これも当然で、MVCなんて昔はなかったから、当然昔のGUIフレームワークは『文法的には』サポートしてない。
勿論それでもやれば出来るのだが、それは知っているからであって、知らないようでは組みようがない。

だからとりあえず今最新の物を使っておけ、というオススメになる。
少なくとも、今現在正しいとされている構成にしやすい物になってるから。
2018/05/25(金) 00:09:47.97ID:DRvoryYO0
>>135
それ、普通は「逃げた」と言われるぞ。
まあいい、それでお前は今何を使っているんだ?まさかWin32APIとでも?
2018/05/25(金) 00:21:44.03ID:KhvSHsgHa
「逃げた」は>>134でしょ?

自分が今使ってるのはWindowsFormsを簡単なツール作成に使うくらいかな
メインはゲームなんでUIは自前
2018/05/25(金) 00:24:55.86ID:DRvoryYO0
>>138
じゃあ何でFormsを勧めない?
そしてMSが何故Formsを捨てたのか理解してるか?
2018/05/25(金) 00:27:41.04ID:DRvoryYO0
>>138
あとついでだから聞いといてやる。
俺がCXについて「逃げた」として、お前はどう突っ込むつもりなんだ?

その話はどうあがいても本筋には繋がらないと思うが、やってみろ。
2018/05/25(金) 00:32:21.58ID:KhvSHsgHa
煽られても誤魔化すその姿勢は素晴らしいと思います

>>139
>>135
> >>49の前提条件が分からないとオススメしようがないな
2018/05/25(金) 00:35:41.85ID:BiCg0uer0
プラットフォームはWindowsって事で良いのかな?
あんまり話広げても困ると思うが
2018/05/25(金) 00:35:44.32ID:OTj3d8ZM0
もういい加減Cから離れた話になってるから、さっさと終わらせてくれ
2018/05/25(金) 00:40:30.62ID:DRvoryYO0
>>141
お前みたいなクソガキではないからな。

お前がWin32APIを『今』使っていてそれを勧めるのなら、それもありだろう。しかし、そうではない。
お前は今Formsを使っている。なら、それを勧めるのならそれもありだが、それもしない。
おかしいと思わないか?

Formsを使っているうちはFormsの問題に気づけない。
丁度、Cを使っている奴がCで何も問題を感じないのと同じだ。そんなもんだと思っている。
だから古いフレームワークをずっと使い続けている奴が古いのを勧めるのはあり得るし、不思議ではない。
しかし、お前はそうではない。

そりゃ単なる荒らし行為だよ。或いは構ってちゃんか?
2018/05/25(金) 01:04:47.66ID:sRNwQo8C0
スレタイも読まずに中身のない長文書くアホが早く居なくならないかなぁ...
2018/05/25(金) 01:13:49.55ID:KhvSHsgHa
ログ読み返して見たら最強とかオススメとか最新とかは言ってるけど
使ってるとは書いてないのな、ちょっと尊敬するわ

>>144
現行で使えるしな、条件次第では別に勧められても不思議じゃないだろ
勉強なら別に今使ってなきゃオススメ出来ないってこともないと思うし
GUI関係ないけどプログラミングの勉強にCASLとかオススメだぞ
2018/05/25(金) 01:19:35.26ID:DRvoryYO0
>>146
仮に俺が「使っている」と書いていたとして、どう突っ込むつもりだったんだ?
聞いておいてやる。

> GUI関係ないけどプログラミングの勉強にCASLとかオススメだぞ
ねえよ。
2018/05/25(金) 01:28:16.78ID:DdMVyRqo0
>>145
長文だけならまだしもその内容が間違っていたり古かったりと目も当てられん状態だしね
こういう人ってやっぱ実社会でも煙たがられてるんだろうね
2018/05/25(金) 02:12:57.50ID:HzazF40RM
c言語というかwindowsAPIとかのがGUI学ぶならいいと思うが
大抵肝の部分隠蔽されてるし
cでGUI書くのがめんどくさいってなら同意できるけど
2018/05/25(金) 13:09:14.22ID:slKDy5Ac0
匿名掲示板で憂さ晴らし
ちょっとかっこ悪い
151デフォルトの名無しさん (アウアウカー Sa95-NVy/)
垢版 |
2018/05/25(金) 13:19:04.78ID:aaZ+YEFMa
最初の質問から遠く離れてしまった感
2018/05/25(金) 13:38:23.63ID:OWfOKoxu0
ネットでは人を小馬鹿にした発言ばかりする
リアルでは小心者なやつがいるね
2018/05/25(金) 20:31:15.03ID:pg3QaIMjM
> ネットでは人を小馬鹿にした発言ばかりする
> リアルでは小心者なやつがいるね
>>152 みたいな奴のことだな
154デフォルトの名無しさん (ワッチョイ f103-jDrj)
垢版 |
2018/05/25(金) 21:49:19.64ID:q1degsPf0
いつも小馬鹿にされてる>>152可哀想と思ったがそいつに小馬鹿にされとる>>153がおったw
2018/05/26(土) 14:56:29.53ID:LE8Quobi0
>>136
>GUIもそうで、今現在最先端なのはJavaScript/HTML/CSSだ
その大部分はテキスト処理ではないか?HTMLもテキストベースの処理のためなのではないか?
GUI の要素からはかけ離れている気がする

たとえば GUI ならば新しいウィンドウを起こし、新しいツリービューを起こし、任意のタイミングで音を出し、
映像をコントロールする(あらかじめ内容の決まったものを垂れ流すのではない)
HTML/CSS/Javascript って、そんなことができるのか?
smalltalk とかだったらまだ意見として分かる、でも HTML とかが GUI のもっとも成功したものだとは思わない
そもそも HTML/CSS/Javascript と GUI とを結びつけるのがへんだと思う

対案:そうだな、いまだったら Java で GUI をやるのがわかりやすいのではないか?まあ、現状廃れているのではあるが
2018/05/26(土) 15:05:51.97ID:Zru1hJqs0
HTML5/JavaScript の実装例としてはGoogleマップが有名
マウスでブラウザの表示をグリグリ動かすのは今や当たり前
2018/05/26(土) 16:28:32.02ID:zyN05tSDd
jQueryとかWordPressなどのウェブ技術は、DHTMLでGUIをバリバリ実現してるよ。
2018/05/26(土) 16:30:27.73ID:xltAFcbA0
>>153のすぐ後に>>154があるのに>>152はどうやって小馬鹿にしたんだろう?
論理的思考能力のない奴はこれだから... w
159デフォルトの名無しさん
垢版 |
2018/05/26(土) 16:32:10.63
>>155
おじいちゃんの脳内はHTML5登場前の知識で止まってるんだな
2018/05/26(土) 16:36:33.03ID:LE8Quobi0
>>159
HTML5 で新しいウィンドウを発生させることができますか?
2018/05/26(土) 16:38:10.94ID:UEpiBtAT0
>>155
お前がそんなに馬鹿なのにコテなのが本当に意味不明。
お前が嫌われているのも当然だよ。

> たとえば GUI ならば(以下略)
出来ないと思っているのなら、WebページなりVSCodeなり見て考え直せ。

> そもそも HTML/CSS/Javascript と GUI とを結びつけるのがへんだと思う
それはお前のGUIの定義が間違っているからだ。
前にも言ったがお前は抽象思考が出来てない。だから三流のままなんだよ。
Webページ自体がGUIなんだよ。お前はこれを理解出来ていない。
あからさまな「ボタン」である必要はなく、クリックに反応するのならそれは「ボタン」なんだよ。
或いは、Webページと同様にマウスに反応する画面を他GUIで作ってみることを考えろ。
明らかに死ねるだろ。

> Java で GUI
JavaのGUIなんてC以上に使われていないゴミだ。
ミスリードどころではないぞ、マジで死ね。

> でも HTML とかが GUI のもっとも成功したものだとは思わない
今のところHTMLがGUIの最も成功したものだよ。
・現状のGUIは、Webで済む場合はすべてWebが使われている。
・他GUIはWebを周回遅れで追っている。
GTK確認したが、GTK2はForms相当のゴミ、GTK3はWPF相当のゴミだった。
CXでご不満ならUWPか?と仮定しそちらも確認したが、
UWPで採用された「async/await」「セキュリティ」については、
最初からJavaScriptはそのアーキテクチャだった。結果的に、さらにWebに寄って来てる。

ただ、UWP/WinJSについてはElectron相当のポテンシャルはあるのかもしれん。
採用事例がほぼ無いらしいが。
あと、GTK3のバージョニングがおかしいから、GTK4がもうすぐ出てくるのかもしれん。
「HTMLパーサ」「CSS」が出てくればまだ戦える可能性は残る。
162デフォルトの名無しさん
垢版 |
2018/05/26(土) 16:40:58.14
>>160
できるよ
jQuery UI使うのが簡単かな
2018/05/26(土) 16:43:58.22ID:LE8Quobi0
>>162
なるほど、ありがとう
2018/05/26(土) 19:18:25.85ID:2tHVmW7A0
優勢と見るやまた長文レスか
2018/05/26(土) 19:26:11.72ID:LE8Quobi0
>>161
>Webページ自体がGUIなんだよ。お前はこれを理解出来ていない。
ブラウザの手のひらの上で踊るのが GUI なんですか?

>JavaのGUIなんてC以上に使われていないゴミだ。
そのとおりだと思いますが、では、どうしてゴミになってしまったのでしょう?Java-GUI のどこがまずかったのでしょうか?
2018/05/26(土) 20:16:40.70ID:UEpiBtAT0
>>165
> ブラウザの手のひらの上で踊るのが GUI なんですか?
そういう問題じゃねえ。つか、理解出来て無いのお前だけだぞ。

> Java-GUI のどこがまずかったのでしょうか?
全部だろ。

元々Javaは現在のWebが担っている所を負担出来るポテンシャルはあった。
統一バイナリの対象はUWPよりも広く、Linuxまで含まれていたし、
つい先日までブラウザにはJavaの動作環境は同梱状態だった。
最初期には、今は当たり前のようにWebで行われる事も
Javaアプリ(2chで言う専ブラ相当品)の配布で対応されていたこともあったはず。

んで、今この状態だろ。Cより死んでいるのは全部駄目駄目だったからだよ。
GTKはGnomeとFireFoxが適用事例らしい。(どうもドイツ人はGTKが大好きのようだ)
Javaなんてマジで誰も使ってないだろ。(Eclipseがそうなのかもしれんが)
それは誰も使う価値があると認めないからだよ。

とはいえ、Java自体は最も成功したプログラミング言語なのも事実なんだが。
2018/05/26(土) 20:26:20.90ID:LE8Quobi0
>>166
>>ブラウザの手のひらの上で踊るのが GUI なんですか?
>そういう問題じゃねえ。
ふふ、まあおっしゃりたいことは分かるのですが、私は仮想的な存在はデフォルトで否定的にみるものでして

>とはいえ、Java自体は最も成功したプログラミング言語なのも事実なんだが。
私は、Java の現状の状況を Java に内在した原因として捉えたいと考えています。
Java のまずい状況は Java 自体に原因があるはず
さて、それはなんでしょうか?

Java アプレットもあれほどだったのに、現在ではほとんどのブラウザに採用されなくされてしまった
なぜなのでしょうか?
2018/05/26(土) 20:38:22.76ID:UEpiBtAT0
>>167
つか、お前が書けよ。

俺は何でそうなったかは知ってる。
それは政治的でもあり、技術的でもある。
が、馬鹿が煽ってくるスレでは情報はやらないことに決めてるんだよ。
だから敢えて書いてない。(自学用の鍵を与えるに留め、外して書いている)

ただし、馬鹿が馬鹿なりに考えて自学するのは手伝ってやるから、
お前が勝手に書け。それが俺の認識と合ってるかどうかくらいは答えるよ。
それで俺の認識が間違ってるのなら勿論叩いてくれていい。
ここはそういう場所だし、その為の場所でもあるし。

ただお前の問題はそこじゃない。
君は詳細を詰めるのではなく、抽象思考の癖を付けた方がいい。
今時詳細はググレば分かることが多いんだよ。ただの知識でしかない。
Javaアプレットが死んだ理由なんてすぐ出てくるだろ。
そんなことよりも、WebがGUIだと直感的に思えないことの方がものすごく問題だ。
2018/05/26(土) 20:45:33.77ID:83AeDi6ka
布石打ってまで逃げるくらいなら書かなきゃいいのに
QZからも逃げるとか徹底してんな、それとも今ググってるのか?w
2018/05/26(土) 20:51:33.49ID:LE8Quobi0
>>168
>馬鹿が馬鹿なりに考えて自学するのは手伝ってやる
嬉しい!じゃ、お言葉に甘えて

私は Java 仮想マシンの存在自体がまずいと考えています。
Java はネイティブコンパイルできているべきだった、現在は LLVM コンパイラ環境もあることだし
仮想マシンの意義は当初から疑問に考えていたことでした
逆に Java のライブラリ体制は強く推しているつもり、これは C/C++ にはないリソース(=多数の人間で共有されうる共同幻想)だと思います

GUI も、同様に共同幻想として許容できるか、という視点で考えています
Java のそれや Win32API がそうだとはとても思えませんが、さりとて現時点でのベストはわからない

web 系を意識しだしたのは最近なのでこれについては意見はありません、手元で redmine を導入したときは gem が便利だったし、
rust も同様のパッケージ管理機構を持っているのは好感をもっています
2018/05/26(土) 20:55:39.37ID:UEpiBtAT0
>>167
> Java のまずい状況は Java 自体に原因があるはず
ちなみに、俺は今Javaが不味いとは思ってないぞ。
GUIは死んだが、それは些細なことだ。

ここら辺が根本的に違うかもしれん。
俺は一つの言語で全てが出来るべきだとは思ってない。
むしろそれを目指しているのはC++だが、迷走しつつあるだろ。
2018/05/26(土) 21:00:53.53ID:gIREkBj10
さあ、適切なスレに引っ越すか、黙るか、自分の振る舞いを見直そうか。
2018/05/26(土) 21:26:39.92ID:UEpiBtAT0
>>170
> 私は Java 仮想マシンの存在自体がまずいと考えています。
それは後付だ。
当時は各マシン毎に別々にバイナリを用意するのは大変な手間だったし、
実現すれば確かに素晴らしかったんだよ。

で、実際、ある程度実現はしたわけだが、
今現在「マルチプラットフォーム」に関しては完全にWebに取って代わられた。
だからJavaが現在これを宣伝文句に使うことはなくなったが、あって悪いものでもない。

ただ、本質的にはそこは問題ではないんだよ。
エコシステムにとっては、「上質なコードが相当量有る」ことが重要なのであって、
Javaは完全にこれを満たしている。
ネイティブでLLVMを生かしたいのなら、
技術的には、Javaソースコードをネイティブコンパイルするコンパイラを作ればいいだけ。
仕様としてはほぼC++のサブセットなんだから、技術的にはすぐ出来る。
当然GC機構はバイナリに同梱だ。
これだけで、ソースコードを1文字も改変することなく動く。
だから、言語としては「上質なソースコード」が財産なんだよ。
動作環境なんてすぐ変えられる。

現在これが出来ないのは、オラクルが許さないからでしかない。
だから、所有者が変われば変わる可能性もあるだろうさ。
ただ、実験的にはgoogleとかで試されていてもおかしくないし、
音沙汰無しなのは脈無しだとも思うが。

主にJavaについて話したいのなら、Javaスレに移動でこちらは構わない。
その場合はリンクしてくれ。
2018/05/26(土) 21:36:14.60ID:U/ZGluCF0
小学校でプログラミング必修と聞いてBASICやるのかと思ったら
GUI版タートルグラフィックを想定かよ。
2018/05/26(土) 23:09:29.29ID:zyN05tSDd
後世のために、デジタルテレビにJavaが使われていることを覚えておいてくれ。
2018/05/27(日) 02:30:20.66ID:X1xnlCWt0
Javaと言えば今年の秋にリリース予定のJava11から無償のJDKが廃止されるのがどう影響するかだな
下手すれば一気にシェアを落とすことも考えられる
177デフォルトの名無しさん (ワッチョイ 399f-EK2Y)
垢版 |
2018/05/27(日) 03:31:43.71ID:cn9TbCYJ0
OpenJDKは?
2018/05/27(日) 07:10:19.30ID:8o2J3JEk0
>>177
使う方法を教えてください
2018/05/27(日) 09:42:16.43ID:Ezl3r8+N0
今後泥アプリは無料で作れなくなるの?
2018/05/27(日) 09:54:19.62ID:CPM9xRzw0
>>176
> Java11
なんだそりゃ?と思って調べてみたら、なるほど酷いことになっている。
171,173は技術面での話で、政治的にはかなり深刻だなこれは。
181デフォルトの名無しさん
垢版 |
2018/05/27(日) 11:20:24.54
言うほどひどい変更か?
RHEEとCentOSと同じだろ
182デフォルトの名無しさん (ワッチョイ 399f-DqgS)
垢版 |
2018/05/27(日) 16:17:28.83ID:cn9TbCYJ0
>>178
Windowsの場合はこことか読めばわかるんじゃないかな。
http://blog.fieldnotes.jp/entry/install-openjdk-on-windows
https://qiita.com/ykubota/items/582caa8621a5fc86d0a1

Linux の場合は何も考えなくても最初から入ってるディストリビューション結構あるのではないか?
少なくとも RHEL, CentOS, Ubuntu のような主要なディストリビューションにはある。
なくても yum や apt で追加可能。
2018/05/27(日) 16:22:56.43ID:cn9TbCYJ0
しかし Windows のコマンドプロンプトから curl や tar が使えるようになっていたのは知らなかった。
これは良いな。一々余計なアーカイブソフトを後から入れなくても済む。
2018/05/27(日) 16:34:10.01ID:OKZJ+Sja0
いつまでやってんの
185デフォルトの名無しさん (アウアウカー Sa95-NVy/)
垢版 |
2018/05/28(月) 12:09:22.29ID:0ow6THVWa
苔のむすまで
2018/05/28(月) 12:34:46.04ID:FlDMWdNW0
一億と二千年経っても
2018/05/29(火) 00:01:56.34ID:I2Hl4RWx0
> 「上質なコードが相当量有る」ことが重要
フォートラン圧勝
2018/05/30(水) 22:41:12.50ID:LgzWe7xH0
printfでなにか文字表示させた場合と何もしない場合で結果が変わることってありますか?
2018/05/30(水) 22:46:22.46ID:LgzWe7xH0
自己解決しました
2018/05/30(水) 23:22:02.29ID:TSp4NAvfa
とりあえず、値を取得する系の関数では副作用を起こすような記述はやめような
例えばグローバル変数をいじるとかポインタをいじるとか標準入力・標準出力・ファイル操作するとかはやめろよな

int getValue(int x, int y) {
 …
 return ○○;
}

こういう関数で printf とかするのは論外

あっ、ちなみに setter でも値の設定だけを行い、標準入力・標準出力・ファイル操作などはするなよ

void setValue(struct MyClass *obj, int x, int y) {
 obj->r = x * x + y * y;
 obj->theta = atan2(y, x);
}

みたいな感じで
2018/05/31(木) 01:29:57.08ID:FEa+Gvkc0
デバッグする時はいいのでは?
2018/05/31(木) 01:31:10.71ID:g4jt9Ien0
とりあえずsetter/getterはクソだな
オブジェクト界最大の汚点だ
2018/05/31(木) 01:52:22.10ID:HP6OddUA0
つ プロパティ
2018/05/31(木) 09:09:16.76ID:lN1dVvxL0
>>193
それこそ真ゲッターだろ
2018/05/31(木) 09:20:10.03ID:HP6OddUA0
プログラム言語がサポートしていればそれ程酷いことにはならない
https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
196デフォルトの名無しさん (ワッチョイ 4161-tKKY)
垢版 |
2018/06/01(金) 21:19:49.50ID:L4m1DFki0
バッチなのですがスペースの問題にぶち当たってます
素敵仕様って言うんですかね?

フルパスから拡張子を抜いたファイル名を取得したいんですが
%^n1でファイル名を取得しているんですが
ファイル名に全角スペースが入っているため完全なファイル名が取得できなく困っています
""で囲っても取得できないです 全角スペースと半角スペースが混ざっていると取得できるのですがなにかいい方法ありますか?

"D&Dで渡したファイルのパスが欲しい"に拘らなければ、テキストファイルにパスリストを書いて読み込むみたいな外部ファイルを使う方法にするとか
Powershellみたいに.Net Framwork呼ぶとか
もしくはファイル名取得用のコンパイルファイルをかますとか

Google先生以上の回答は出ないでしょうか?
2018/06/01(金) 21:35:57.65ID:Hbp4Wjs80
C言語との関連を1行で述べよ
2018/06/03(日) 16:23:01.05ID:i7wWwbyd0
void func(char *const restrict ary)
{
printf("%s\n",ary);

*(ary + 1) = '\0';

printf("%s\n",ary);

}

int main( int argc, char *argv[] )
{
char ary[] = "hoge";

func(ary);

return 0;
}
2018/06/03(日) 16:24:38.29ID:i7wWwbyd0
このコードで配列の中身が書き換えられてしまうんですけどなぜですか?
constとrestrictの関係性がいまいちよくわかってないです・・・
2018/06/03(日) 17:12:43.28ID:5RsKIUxf0
>>198-199
const の位置が悪い
https://ideone.com/UOZ3RQ
ristrict は関係ない
2018/06/03(日) 17:20:37.50ID:DGByVz/ba
スマホでポチポチ入力してたら既に書かれてるけど

>>198-199
とりあえずrestrictは無視するとして
>char *const ary
aryが定数。ary=0はコンパイルエラー。*ary=0はOK
>const char* aryまたは char const* ary
aryの参照先が定数。ary=0はOK、*ary=0はエラー
202デフォルトの名無しさん (ワッチョイ d59f-NLsb)
垢版 |
2018/06/03(日) 17:23:51.40ID:m3SIxw/I0
>>198>>199
func() の中の *(any + 1) = '\0' がコンパイルエラーにならない理由は const が any に対するものであって
*any に対するものではないから。そのプログラムの場合 any そのものを変化させる any = NULL や any++
みたいな記述があるとエラーになる。

restrict はコンパイラの最適化に対するヒントで、そのポインタが別のポインタによって指されていないことを
前提とした最適化をして良いことをコンパイラに伝えるためのものだ。伝えられた側のコンパイラはそのような
最適化をやってもいいしやらなくても良い。
2018/06/03(日) 17:24:22.63ID:5RsKIUxf0
>>201
>スマホでポチポチ入力してたら既に書かれてるけど
どうして、書いている時点でそれがわかるのですか?高性能な専用ブラウザなんでしょうか
2018/06/03(日) 17:25:19.52ID:m3SIxw/I0
うう。ゆっくり書いてたら間に二つも回答が・・・
2018/06/03(日) 17:29:03.88ID:xPBqnvux0
>>198-199
俺C言語詳しくない素人だけど、
ポインタに const 修飾子をつけるとき、
修飾子の位置によって定数化されるのが「ポインタ」か「ポインタの指す値」かが異なる。

char *const ary の場合はポインタ(アドレス)を書き換え不可。
++ary; は不可
*ary = 'A'; はOK

const char *ary の場合は値(文字列)を書き換え不可。
++ary; はOK
*ary = 'A'; は不可

restrict 修飾子は初めて見たけど、ググった限りは最適化に使うもので、
プログラムの意味は変わらないので無視してよかろう。
2018/06/03(日) 17:29:56.23ID:xPBqnvux0
>>204
俺なんかゆっくり書いてる間に回答が3つも…
2018/06/03(日) 17:32:22.37ID:xPBqnvux0
ポインタも値もどっちも書き換え不可にするには
const 型* const 変数名;
としないといけなそうだな。
2018/06/03(日) 20:58:34.59ID:m3SIxw/I0
型 const * const 変数名; でも良い。
209デフォルトの名無しさん
垢版 |
2018/06/03(日) 22:02:08.16
いつかどこかで見たこの流れ
2018/06/04(月) 08:50:32.40ID:3BCLNr2eM
*const 変数名
って書くより
変数名[ ]
って書く方が好き
2018/06/04(月) 19:56:59.58ID:/VyRep/C0
全然関係ないのを比べてるアホ
2018/06/04(月) 21:09:00.97ID:gbEnuF2j0
モノクロA4レーザープリンタが、値段も含めていい感じになっていますね…
2018/06/07(木) 23:22:34.08ID:69L/zpo00
>>205
>>206
でも一番わかりやすい!

まぁ、よく見る
const char **
の大半は意図した通りに機能してないよな
誰も中み書き換えないから表面化しないけど。。。
2018/06/08(金) 00:03:38.43ID:+kkHvNSG0
>>213
const 修飾子を型指定より前にもってくる書き方は正直いってなじめないですよね
2018/06/08(金) 00:06:11.65ID:+kkHvNSG0
関係ないけれども、今日から「民法」を勉強しはじめました、民法20条まで進みました
こういうのも新鮮でおもしろいなあ、と思いました
2018/06/08(金) 05:45:49.36ID:524P9UER0
民法総則からキチンと基本原理を体型立ててやらないと理解できんぞ
217デフォルトの名無しさん (アウアウカー Sa2d-22KU)
垢版 |
2018/06/08(金) 09:37:11.15ID:1PlqYTvda
そうか。じゃあ俺は拳法始めよう。
2018/06/08(金) 17:49:04.15ID:rAAW+Mj80
>>215
2chのルールも覚えろよ、タコ
2018/06/09(土) 00:34:01.58ID:BV3WmSRm0
>>215
民法94条に到達して手が止まりました
これは難しい…条文は簡潔ですが判例が複雑怪奇でパターン抽出できないでいます

>>216
直に法文文面や判例にアタックしていますが弾き返されていますね…特に判例は裁判官の個性が見える気がします、当初考えていたほど「画一的」ではなかったのです
2018/06/09(土) 05:48:25.82ID:nuHHgQUg0
>>219
さあ、適切なスレに移動してそこで10年くらい引きこもっていようか。
2018/06/21(木) 21:10:00.20ID:uId0yWCha
配列の中身を一つずつ見て0じゃなかったら0にするみたいなプログラムがあります。

中身を見て代入するか分岐するのと、
投機的に0を代入する方法のどちらが速いのでしょうか
2018/06/21(木) 21:18:45.56ID:PKzn8umZH
推測するな、計測せよ
2018/06/21(木) 21:21:14.62ID:bCLvNhPr0
無条件に0代入する方がそりゃ速いだろう
2018/06/21(木) 21:24:54.22ID:sKPxBIBt0
>>221
もちろん見ないほうが早い。
memsetで一気に0にするのが最速。

気になるなら測定しましょう。測定しない効率化なんてありえないよ。

それと、こいつを壁に飾っとくべし。
「プログラム最適化の第一法則:最適化するな」
2018/06/21(木) 21:46:17.50ID:KRXESqZV0
>>218
ここは5chだ ぼけ
226デフォルトの名無しさん (ワッチョイ 1f9f-6R0o)
垢版 |
2018/06/21(木) 21:52:50.57ID:+L4M88hA0
最適化されたらどう書いても memset 使ったのと同じになるかも知れないけどな
227デフォルトの名無しさん (アウアウカー Sa93-tQU5)
垢版 |
2018/06/21(木) 22:26:17.21ID:iolQTPDna
なんで開発要件も聞かないうちから見ないほうが速いに決まってるって言いきれるの?
0以外が入ってる可能性が低くて、書くより読むのが圧倒的に速いハードだったら責任取れんのかよ!
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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