X



C言語なら俺に聞け 146
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 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
0237デフォルトの名無しさん (アウアウカー Sa93-ndvs)
垢版 |
2018/06/22(金) 09:40:17.18ID:TLETRHnoa
自分は特殊な状況を考えられる特別な人と思いたいんですね。わかります。
0239デフォルトの名無しさん (アウアウカー Sa93-ndvs)
垢版 |
2018/06/22(金) 10:10:27.57ID:TLETRHnoa
なんとしてでも自分以外をアホということにしておきたい。わかります。
0246デフォルトの名無しさん (ワッチョイ 7ffe-GwbS)
垢版 |
2018/06/22(金) 19:40:06.51ID:SPkT+A/00
今回だけじゃないだろ。

「xxxでどうなんですか?」
「(基本的な環境では)xxxだよ」
「いや、xxxxという稀な環境だと当てはまらないからそれは間違いだ!!」

しょっちゅう見かけるわ。
0250デフォルトの名無しさん (ワッチョイ 1f9f-GwbS)
垢版 |
2018/06/23(土) 00:38:49.81ID:EFPp8pY40
極稀な事を思いつく自分は頭が良くて偉いと言いたいのでしょう。仕方のない事です。
彼はこれまでずっと馬鹿にされ蔑まされてきたのですから。このような機会がなければ
うっぷんを晴らすことができません。もしここで人を罵倒する事が出来なければ彼は
益々ストレスを溜め鉈を持って新幹線に乗ってしまうかも知れません。もはや誰でも
良いのです。掲示板でこの程度のやり取りで大事件が防げるのならば安いものです。
0255デフォルトの名無しさん (ブーイモ MM43-/QFz)
垢版 |
2018/06/23(土) 10:41:43.05ID:VDaSN7SRM
普通は>>222>>224で終わりだと思うわ
その先は蛇足
0263デフォルトの名無しさん (ワッチョイ 1f50-ddCb)
垢版 |
2018/06/23(土) 12:44:28.88ID:UiVIxiJp0
ライブラリや開発環境
使える命令やハード
コア数、キャッシュサイズ、アーキテクチャ
クリアするサイズ
アラインメント
クリアするデバイス
データの出現率

こんなことで最速は変わる

memsetが1バイトずつちまちま代入するようなライブラリも世の中にはたくさんある
小規模組み込みの環境では大抵そう
0264デフォルトの名無しさん (ワッチョイ 1f9f-6R0o)
垢版 |
2018/06/23(土) 13:39:04.42ID:EFPp8pY40
この頃のCPUだと特定の領域を0にする命令自体が最初からあったりしないのかね?ありそうな感じするんだけど。で、最適化されるとmemsetがその命令一つに置き換わって終わり。
0266デフォルトの名無しさん (ワッチョイ 1f50-ddCb)
垢版 |
2018/06/23(土) 14:05:45.27ID:UiVIxiJp0
遅くていいならREP STOSD命令

CPUを使わない方法もいくつか
DMAを使ったり
SRAMの場合デバイスリセットで0クリアされたり
FLASHだとイレースコマンドとか

PCでDMAを使う簡単な方法は
GPUのメモリをゼロクリアしておいて転送する
0272デフォルトの名無しさん (ブーイモ MM43-/QFz)
垢版 |
2018/06/23(土) 14:42:28.77ID:VDaSN7SRM
>>271
妄想で生きてる奴には何言っても無駄だよ
0275デフォルトの名無しさん (ワッチョイ ff23-GwbS)
垢版 |
2018/06/25(月) 12:44:11.34ID:UNYa6OHo0
というか、高速化しなきゃなやばいかなー と思ったのなら
void SAKUJO(dst,size){ memset(dst,0,size); }
くらいクソ適当に書いておいて、「あとで」 ごちゃごちゃいじればよろしい

それか、>>274のように 事前に済ませておく かだな
0276デフォルトの名無しさん (アウアウカー Sa93-ndvs)
垢版 |
2018/06/25(月) 12:54:48.48ID://DXoKuSa
ま、しかし、よくよく考えてみれば全てを同じ値で埋めておかねばならない状況はあまりないのではないか?
面倒だから一気に全て0にしておいて後から必要な所を埋めるなんてのはよくあるかも知れないが。
そういうのでも calloc() でメモリ確保するなら考える必要ないよな。
0278デフォルトの名無しさん (ワッチョイ 9f8a-cge6)
垢版 |
2018/06/25(月) 13:16:25.31ID:aMpIUa/b0
0クリアの話題でると思い出す事件があったな
某サイトでは業務Gと制御Gの2グループがあって
制御Gは業務Gの処理(データ値)には介入しないという建前があった
あるレコードを更新する時、その整合性の確認をとるため、
制御Gは、キーとなる構造体をmemcmpして一致の判定していた
業務Gは、処理関数の中で構造体を自動変数として確保し、
メンバーに一つ一つ値を設定していた
キーを指定し更新処理を呼んでも一致するデータが見つからないと
エラーが返される結果となった
何故エラーにされるのか、しばらくの間、原因が分からなかった。
0279デフォルトの名無しさん (アウアウカー Sa93-ndvs)
垢版 |
2018/06/25(月) 13:19:21.95ID://DXoKuSa
={0} での初期化を布教した方が良いね
0283デフォルトの名無しさん (ワッチョイ 7fd2-XQuB)
垢版 |
2018/06/26(火) 07:01:33.06ID:tL55F/sw0
H8:EEPMOV
0284デフォルトの名無しさん (ワッチョイ a9d2-JxBb)
垢版 |
2018/07/01(日) 01:54:22.43ID:WAYB1PLl0
すいません質問です
C言語の勉強をしようと思っているのですがIDE?というのが沢山ありすぎてどれを選べばいいのか分かりません!
迷える子羊に何卒ご教授下さいませ・・・
0286デフォルトの名無しさん (ワッチョイ 02d2-ZkQx)
垢版 |
2018/07/01(日) 02:08:06.13ID:T+EQOOQd0
>>284
WindowsならVisual Studio Community
LinuxならEclipse CDT
Macなら標準のXCode
最初はIDE使わないでテキストエディタでやるのがいいとは思うがね
0287デフォルトの名無しさん (ワッチョイ 219f-iScA)
垢版 |
2018/07/01(日) 02:21:34.53ID:8/sCKaWm0
>>284
> 最初はIDE使わないでテキストエディタでやるのがいいとは思うがね (>>286)
これは絶対無いから止めとけ。

環境整備は初心者では無理なので、もし先生がいるのならIDEの立ち上げまではやってもらえ。
そして最初からIDEを使って、ブレークポイント貼りまくってステップ実行し、
納得いくまで変数をウオッチしろ。

C#のIDEなら文法エラーはサジェストが出てOK押すだけで治る。
(C系でそこまでやってくれるものがあるのかは知らん)
括弧の対応すらしてくれないテキストエディタなんて、
今時原稿用紙と手書きで草案を練れ、というようなもの。
勿論それが合う人もいるが、普通はないよ。
0290デフォルトの名無しさん (ワッチョイ 61b3-7NWm)
垢版 |
2018/07/01(日) 02:51:14.35ID:aoQiIM1T0
>>284
IDEでクエスチョンがつくということは、プログラミング初心者と見た。もしそうなら、Cはオススメしない。もっといい言語がたくさんあるので、プログラミングがどういったものであるかを、他の言語でざっくり掴んでから、Cに取り組むことをお勧めする。
その頃には、IDEがなんであるか、どのIDEが自分に向いているかは、もうわかっているはずだ。

どうしてもCに今すぐ取り掛からなければならないという事情があるなら、

MFCを使わなくてはならないなら、visual studio。
そうでなければ、またはターゲットがWindowsでなければ、Eclipse

どちらにせよ、タップリ不幸になれるので覚悟すること。
0291デフォルトの名無しさん (ワッチョイ a9d2-JxBb)
垢版 |
2018/07/01(日) 03:12:41.99ID:WAYB1PLl0
>>285-290
皆様遅い時間なのに丁寧に答えて下さり感激の至りですありがとうございます
C言語を勉強しようと思っているのは使う予定があるからなんですすいません・・・
取り敢えず教えてもらったものDLして勉強します、重ね重ねありがとうございます!
0293デフォルトの名無しさん (ワッチョイ 79b3-HrKv)
垢版 |
2018/07/01(日) 07:33:37.83ID:VIP13YQk0
Visual StudioにもLinuxターゲットがある。
0295デフォルトの名無しさん (ワッチョイ 79b3-HrKv)
垢版 |
2018/07/01(日) 08:04:14.93ID:VIP13YQk0
じゃあWSL使えば。
0297デフォルトの名無しさん (ワッチョイ 79b3-HrKv)
垢版 |
2018/07/01(日) 08:19:16.03ID:VIP13YQk0
Windowsのほうがいいし。
0299デフォルトの名無しさん (ワッチョイ 8212-iScA)
垢版 |
2018/07/01(日) 11:33:42.78ID:s3Ywi94+0
ポエムや日記用にもテキストエディタの2〜3は入れてていいんじゃないの

それとコマンドプロンプトの併用も考えてるんじゃない
今の時代の「C言語をやる初心者」は、CUIを知らないんだよ
コマンドを使ってみないと、何を何のために作ってるか分からなくなる
巷で言うスマホの「アプリ」とかのGUIじゃなくて、圧倒的に古いCUIなんだから、今の若いモンには明らかに異質なものを作らせるんだよ
出来上がってくるソフトウェアは「黒い窓」なる謎の儀式でしか動かない極めつけの謎だ
0300デフォルトの名無しさん (ワッチョイ 219f-iScA)
垢版 |
2018/07/01(日) 12:41:57.93ID:8/sCKaWm0
つかそもそもEclipseっていいのか?
あれ、Linuxだと他選択肢がないから使われてるだけでは?

Cで使ったことはないが、Windows/NetBeans/PHPはだいぶ酷かったぞ。
もっさりしてるし、不安定だし。
この組み合わせが最悪なだけかもしれんが。
そして一応EclipseとNetBeansは検討対象らしいからな。
(俺的には比較するまでもなくVS>>>NetBeans)

VSとEclipse両方使っている奴いる?いたら感想を。
0301デフォルトの名無しさん (ブーイモ MM4d-zt73)
垢版 |
2018/07/01(日) 14:04:36.18ID:iXNUK265M
今のところvsと肩を並べられるIDEなんてないので当然eclipseもvsより劣るわけだが、
リファクタリング機能だけは圧倒的にeclipseのほうが優秀だった。
独自環境用の多数のIDEがオープンソースのeclipseから派生して作成されてるので、個々に使い方を覚えなくていいのもメリットかもしれない。
使い始めた頃はプロジェクトとビルドルールの管理と、日本語が独特なのが、取っ付きにくかったかな。

まあ言いたかったことは、vscode輝け
0302デフォルトの名無しさん (ワッチョイ 219f-iScA)
垢版 |
2018/07/01(日) 14:34:44.13ID:8/sCKaWm0
>>301
> リファクタリング機能だけは圧倒的にeclipseのほうが優秀だった。
それってCについてだよな。MSはVSについてはC#しかやる気出して無いから。なお、

Q. どうしてVC++のエディタはC#に比べて糞なのですか
A. だってお前らどうせemacsとか使ってエディタ機能使わないじゃん(なお公式)

だったはず。
そのとき、「え?そんなに違うんか?」と思って試し、その差に愕然とした覚えがある。
俺は最新環境を使ってはいないが、最新でもだいぶ見劣りしたと記憶している。

リファクタリング機能とかはユーザがアドオン書けた方がいいから、
それもあってVSCodeなのだろうね。
0306デフォルトの名無しさん (ワッチョイ 2193-OY1D)
垢版 |
2018/07/01(日) 17:12:51.78ID:KJj1sYCg0
仕事や学校でCを使う予定があるなら、
現場で使ってる開発環境に合わせるのが最善だろう。
IDEの優劣よりも優先されるんじゃないかな。

今のご時世にCに関してまったくの素人だと、
Cを使うのにIDEが必須と勘違いしてる可能性もあったり。

任意のテキストエディタで.cファイルを打ち込んで
コマンドラインでコンパイル、実行という手順が
紹介されてない入門書や入門サイトがあるかも。
0307デフォルトの名無しさん (ワッチョイ 219f-iScA)
垢版 |
2018/07/01(日) 17:13:26.42ID:8/sCKaWm0
>>305
それはさすがに老害の発想だぜ。

今時のemacsはインテリセンスも出るし、
flyCheckで文法エラーもリアルタイムで表示される。
お前はそういうの知らずに言ってるだろ。
(なお、vimも同様だったはず)

最終的にはそういうのがうざくなって色々切ったりするけど、
俺は初心者こそIDE(というかゴテゴテの環境)でスタートすべきだと思ってる。

大体において、
「動きません。でも私のコードは完璧です。これはIDEのバグですか」と言ってくるんだから、
「ブレークポイントを全部の行に置いてループも1回ずつステップ実行して確認して死ね」
と返せないと意味無いだろ。
0308デフォルトの名無しさん (ワッチョイ 219f-iScA)
垢版 |
2018/07/01(日) 17:22:47.54ID:8/sCKaWm0
>>306
> 紹介されてない入門書や入門サイトがあるかも。
VSがそうですが何か?(なおC++)
https://msdn.microsoft.com/ja-jp/library/jj620919.aspx

てかマジな話、VSで閉じていいのならそんな知識いらんて。


> 現場で使ってる開発環境に合わせるのが最善だろう。
> IDEの優劣よりも優先されるんじゃないかな。
これはその通りだが。
0309デフォルトの名無しさん (ワッチョイ 39bb-VCRa)
垢版 |
2018/07/02(月) 00:22:55.41ID:MZb/U4ur0
>>300
>つかそもそもEclipseっていいのか?
>あれ、Linuxだと他選択肢がないから使われてるだけでは?

組込みだとマイコンのメーカーのIDE(コンパイラ)が
EclipseベースなIDEな事があるから
VSではなくEclipseに馴れるって意味で選択する意味はあるかな

実際組込み現場でCでの開発想定したこの書籍だと
Eclipseで開発する事を想定して書かれてる
http://amzn.asia/5PyjxPA


あと余談だけど今さらvimだのemacsだの時代遅れじゃね?
マルチプラットフォームで動くVSCodeやAtom選択した方が
学習コストも少なく高機能だと思うんだけど
0310デフォルトの名無しさん (ワッチョイ 219f-iScA)
垢版 |
2018/07/02(月) 01:24:09.53ID:Ael8RIVm0
>>309
> EclipseベースなIDEな事があるから
なるほどね。

> あと余談だけど今さらvimだのemacsだの時代遅れじゃね?
俺が勧めているわけではないが、「エディタ」という意味ではありだ。
「Emacsは100年のエディタだ」と言われるとおり、あれはマジで100年持つだろう。
そういう構造になっているし、実際今も余裕で現役だ。(Vimも同様)

最大の利点はDSLとしてのEmacsLispだ。(なお独立して使えるらしいが)
この点、VSCodeやAtomもOSSであり同レベルの拡張性を持ってはいるが、
ユーザーベースが違いすぎる。
今現在の状況なら、先に死ぬのはVSCodeやAtomの方だ。

学習コストなんて所詮慣れだし、数ヶ月もあれば問題ない。
当面使う予定がなければすぐに学ぶ必要性はないが、
時代遅れな事を肯定して欲しいのならそれは無理だ。

emacsとgdbは組み合わせて使うことは出来る。
ブレークポイント、変数等を表示出来るlispが提供されればそこそこ行けるはず。
もう既にあるかもしれんが。
0311デフォルトの名無しさん (スップ Sd82-Bibe)
垢版 |
2018/07/02(月) 20:45:33.13ID:egmwRQ41d
フォルダ一括コピーしたいです

c++だとファイルコピーにはCopyFileなるものがあるみたいなのだけどそれはフォルダのコピーはできないようなので、
他のものを探してたらSHFileStructでフォルダまるごとコピーができると知りました
これって再帰的に中身まで見てくれるのか見てくれないのか調べてたのですがわからなかったので
再帰的にコピーしてくれるか否か教えてほしいです
0313デフォルトの名無しさん (ワッチョイ 119f-qY4E)
垢版 |
2018/07/03(火) 00:01:21.27ID:Dmx6jLMV0
>>311
そういうのはOSによって、あるいは使用するライブラリによってやり方が変わるから最低でもOSが何なのか書いて質問した方が良い。
0318デフォルトの名無しさん (ワッチョイ 45fa-2e90)
垢版 |
2018/07/04(水) 21:52:51.64ID:gFgZc5FG0
HTQ
0322デフォルトの名無しさん (ワッチョイ 87ea-ybMY)
垢版 |
2018/07/05(木) 09:24:52.06ID:ppxwAApK0
SHFileOperation() はコピー先にフォルダが無い場合、再帰的にフォルダ作ってくれるね
ただ SHFILEOPSTRUCT の pTo に渡すパス文字列で
ディレクトリのセパレータが / はダメで \ じゃないと再帰がかかってくれない

D:\ 以下フォルダが無い状態で
pTo = "D:/aaa/bb/ccc/ddd";
SHFileOperation()
⇒ 「フォルダ ddd が作れない」  D:\ 以下のフォルダ状態は変わらず

pTo = "D:\\aaa\\bb\\ccc\\ddd";
SHFileOperation()
⇒ D:\aaa\bb\cc\ddd まで再起的にフォルダができる
0323デフォルトの名無しさん (ワッチョイ 87b3-KMj/)
垢版 |
2018/07/10(火) 12:40:53.64ID:PTerA0wX0
超初級で申し訳ないですが、以下のコードのどこに問題があるのか教えてください。
円の周長と面積を求めるものです。(半径は整数値で入力。)
コンパイルはできましたが、.exeファイルが実行不能状態です。


#include<stdio.h>
main()
{

int hankei;
double pi = 3.1415926535;
double enshu;
double menseki;

printf("半径を入力して下さい:\n");
scanf("%d",&hankei);

enshu = 2 * pi * hankei;
menseki = pi * hankei * hankei;

printf("半径%dの円の円周は%lfで、面積は%lfです", hankei, enshu, menseki);

}
0324デフォルトの名無しさん (アウアウカー Sa1b-tqMh)
垢版 |
2018/07/10(火) 12:51:36.15ID:lacLn2e2a
>>323
実行不能状態とはどのような状態か詳しく書くように。
0325デフォルトの名無しさん (ブーイモ MM2b-aMDz)
垢版 |
2018/07/10(火) 13:17:53.02ID:G1Ywym5SM
>>323
ソースコードは問題ない。
戻り値型省略が警告になるくらい。

エスパーすると、
警告をエラー化するオプションが指定されていて、最新コードを実行しているつもりが古いコードを実行していたとか。

もしくはソースコードを直接実行しようとしているとか。
0326デフォルトの名無しさん (アウアウカー Sa1b-tqMh)
垢版 |
2018/07/10(火) 13:45:26.21ID:lacLn2e2a
ま、何れにしてもどういう環境で何をやってどうなったか詳細書いてくれんとわからんな。
WindowsでEclipse使ってる場合とLinuxでvimで入力してgccでコンパイルしている場合では答えが大幅に変わるし。
exeと書いてあるからWindowsだろうと予想することはできるが実はWindowsじゃなくてexeが作られるものと誤解しているだけなんてことも初心者ならありうるしな。
0327323 (ワッチョイ 87b3-KMj/)
垢版 |
2018/07/10(火) 14:15:20.90ID:PTerA0wX0
Windows 10の開発者コマンドプロンプトでコンパイルしました。 cl (ファイル名).c
拡張子がexeのファイルが生成されました。

そのexeファイルをダブルクリックすると、マカフィーによって「脅威を隔離しました」というメッセージとともに削除されてしまいます。
何度やってもそうなります。
0330デフォルトの名無しさん (アウアウカー Sa1b-tqMh)
垢版 |
2018/07/10(火) 15:35:28.40ID:c95ZcwpDa
この頃は単にコマンドプロンプトと呼ばずに頭に開発者って付くのか?
0331デフォルトの名無しさん (ワッチョイ 4793-1gjT)
垢版 |
2018/07/10(火) 15:52:40.79ID:sLQCr7o90
コマンドプロンプト上で実行したらどうなる?
cl で実行ファイルを作ったら、そのままコマンドプロンプトで
実行ファイルの名前を打ってEnter、で動くと思うけど。

コンソールアプリケーションをダブルクリックで実行した場合、
scanf系の標準入力に必要なコンソールってどうなるんだっけ?
0333デフォルトの名無しさん (アウアウカー Sa1b-tqMh)
垢版 |
2018/07/10(火) 17:11:41.78ID:c95ZcwpDa
マカフィーのチェックがおかしいわけだな。
自宅のPCでマカフィー入ってるのあるから帰ったら試してみよう。
■ このスレッドは過去ログ倉庫に格納されています

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