TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
●●●●TCL/TKなら俺に聞け 4●●●●
Java入門・初心者質問スレ Part.7
Java/C++ VS C# どっちが好きか教えて
ふらっと C#,C♯,C#(初心者用) Part148
おまいらのプログラムの勉強の仕方を教えろください
[RPA]PC自動化技術総合スレ[効率化] Part.6
【統計分析】機械学習・データマイニング25
Java入門・初心者質問スレ Part.10
C++相談室 part136
結局開発で最も大切なのはテーブルの正規化と制約
C言語なら俺に聞け 153
- 1 :2019/08/17 〜 最終レス :2020/01/05
- 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/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
※前スレ
C言語なら俺に聞け 152
https://mevius.2ch.sc/test/read.cgi/tech/1560763630/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
- 2 :
- 乙。くるしうない。
- 3 :
- 仮想アセンブラは、元々、日本の情報処理資格試験用に、CASL2 が作られた。
個別のCPU 命令では、試験にふさわしくないから、抽象化した命令が必要だった
でも、世界的には流行らなかった
それで、学生が作った、LLVM に、Apple が飛びついた
- 4 :
- 実像を見てない試験で社会から乖離してるな
バkの集団なんだろうか?
それともz80の問題だしたらライセンス料でも払わないといけないのか?
カネに掛けてはとかくケチな貧乏人が思い付きそうな小手先だ
至るところで独自規格で無意味の羅列、全く学習にならず、受けるだけムダな試験が練り上げられる
- 5 :
- 試験用のアセンブラは、仕様を公開せずに
試験問題の中で初見にすればいい
それで対応力を試すようにすれば
いくらか意味のある試験になる
- 6 :
- 以前に実施されていたマイコン応用システム開発技術者試験のアセンブラ問題は8080, Z80, 6800からの選択だった
現在の情報処理試験エンベデッドシステムの前身となった資格試験
- 7 :
- 実際に使えないものを教えられてるのは英語と同じだな
CASLやっても機械語の練習にならない
「教育用」にまで形骸化すると使い物にならない、現実と実用から乖離する、ファンタジーになる、
これが「教育用」の弊害だ
PASCAL不人気の原因もここら辺にあるんじゃねえか?
IT界隈は教育用と実用の間で揺れてる
- 8 :
- >>2 先生 700行の数式パーサーまたHPに載せて下さい!
- 9 :
- ハゲタマゴどこ行った
- 10 :
- 生理がこないんですけど
どうしたらいいですか?
- 11 :
- >>10
D
- 12 :
- コンパイルもリンクも正常に動いているようだぞ
生まれたのがバグじゃなくて良かったな ha ha ha
- 13 :
- http://program-lecture.info/c_structure5.html
ここのサイトを見ながら学習しているのですがこのshowStatus関数では何故int配列を
int型の仮引数で受け取れてるのでしょうか?配列は配列かポインタでしか受け取れないと思ってたんですが
その認識は間違ってますか
よろしくお願い致します。
- 14 :
- >>13
showStatus()はint型でもint型配列でもなくcharacter型を受け取ってるようだが?
- 15 :
- showStasus() の引数は struct person 型の実体を受けてる
main では
struct person 型の配列を用意 party[]
配列の各要素 party[0], party[1] のぞれぞれについて showStatus() を呼んでいる
本質的には
void foo(int arg);
int main() {
int array[2];
foo(array[0]);
foo(array[1]);
return 0;
}
これと同じ
- 16 :
- >>15
理解出来ました。ありがとうございます( ;∀;)
- 17 :
- >>8
あのコードは今となっては時代遅れだ。意味がない。
- 18 :
- 先生書き直さないんですか?w
- 19 :
- >>10
産婦人科へGo!
https://www.mylohas.net/2018/08/173369menstruation.html
- 20 :
- 下のコードの部分を実行すると、最後の行だけ2回表示されます。
理由はなぜでしょうか?また、最後も1回にするにはどう変更したら良いでしょうか?
よろしくお願いします。
http://codepad.org/WCL1vHLd
- 21 :
- >>20
if ( !fgets(buf, sizeof(buf), fp) ) break;
- 22 :
- >>21
サンクス!
While 行と fgets 行の間にその行を入れたら1回になりました。
修正はこれで良いのでしょうか?
- 23 :
- >>22 の修正だと最後の行以外にもだいぶ表示されなくなってました。
どうするのが正解なのでしょうか?
- 24 :
- 良いのか?って聞かれると
色々言いたくなる奴が大勢出てきそう
- 25 :
- >>23
//while ( !feof(fp) ) {
while (fgets(buf, sizeof(buf), fp)!=NULL){
//fgets(buf, sizeof(buf), fp);
こんなんでどうか
- 26 :
- >>25 うまくいきました! Thanks!
やっぱり俺に訊けスレですね。ここの人達はすごい。
if ( (fp = popen(cmdline,"r")) == NULL ) {
perror ("can not exec commad");
}
while (fgets(buf, sizeof(buf), fp)!=NULL){
printf("%s", buf);
}
pclose(fp);
最終的にこうなりなした。助かりました。
- 27 :
- Ruby では、Windows の、powershell, clip コマンドも呼べる。
UTF-8, CP932 の文字コード変換もできる
クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip ) # 連続する空白類を除去する
IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
- 28 :
- defineマクロで以下をやりたいです。
struct my{
int d0 =0;
int d1 =0;
int d2 =0;
int d3 =0;
int d4 =0;
}:
struct my val;
val[0:2] = (1, 1, 1);
と入力した時にvalのdata0〜data2に1が入るようなマクロはどう書けばいいですか?
- 29 :
- __VA_ARGS__ つこて2段呼び出しだな
qiita.com/saltheads/items/e1b0ab54d3d6029c9593
- 30 :
- >>29
ありがとうございます。
リンクを参考に、可変引数にするマクロまでは出来ました。(作った関数が間違えていたらすみません。)
struct my def2(struct my val, int s, int e, int d1, int d2){
int *p = val.d0;
*(p+s) = d1:
*(p+e) = d2;
return val;
}
/*def3省略*/
#define GET_MACRO(_1,_2,_3,NAME,...) NAME
#define DEF(val,s,e,...) GET_MACRO(__VA_ARGS__, def3, def2)(val,s,e,__VA_ARGS__)
ここから、表記を変える方法が分かりません。
下のようなことをしたいのですが、このように書くとコンパイルエラーになりました。
どう書けばいいでしょうか。
#define VAL[A:B]=(...) DEF(VAL,A,B,__VA_ARGS__)
- 31 :
- マクロ使わずにこれで十分だろ。
typedef struct my;
val = (my){1,1,1};
val = (my){1,1,1,1};
以下のようにはできるけど、
マクロの多用は誰もソースを読みたくなくなるから避けたほうがいいよ
#define SET(v,...) v=(struct my){__VA_ARGS__}
SET(val, 1, 1, 1)
- 32 :
- >>31
すいません、説明不足でした。
どうしてマクロかと言いますと、3つのデータを入れたい場所が0〜2だけではなく5〜7や2〜4の場合もあるからです。
- 33 :
- #define SET(x,s,e,...) memcpy(((int*)&val)+s,&(int[]){__VA_ARGS__},sizeof(int)*(e-s))
SET(val, 1, 3, 1, 1)
SET(val, 1, 4, 1, 1, 1)
部下がこんなコード書いてきたら突っ返すわ
- 34 :
- ID:Y/GLm+KZ0 が上司だったらと想定してみよう。
- 35 :
- 自分の考えが浅はかでした。申し訳ありません
- 36 :
- >>34
背中を撃たれてしまうのでは・・・?
- 37 :
- うーん、どうにかして上のように[]を使って書き換えることは出来ないのですかね。
ちなみに下のようにして全パターン定義しようとしたらエラーでした。何故でしょうか。
#define val[0:2]=(...) DEF(val,0,2,__VA_ARGS__)
- 38 :
- マクロ諦めてインライン関数にしたら?
- 39 :
- >>37
なぜって、#defineを使用するための構文を完全に無視してるからだよ。こちらが思ったことを都合良く解釈してくれるわけでなく、構文通りの単純な置換をしてくれるだけだよ。
一度ちゃんと調べておいた方がいい。
- 40 :
- >>39
なるほどです。
では、[]や:を利用して独自の構文を定義するのはC言語において不可能、ということですか?
- 41 :
- >>40
不可能。やるなら自前でプリプロセサでも書けばいいが、そんなことするくらいなら、ソース上に書くのではなく独自のデータファイルとそれを読み込んでデータを初期化するような処理でも作れば?
- 42 :
- >>41
ありがとうございます。
最終的な目標は、Cを他言語ライクな記述でコーディングすることなので、プリプロセッサについて調べてみます。
- 43 :
- 新言語作った方が良さそうな。
初期のC++みたいにC言語へのコンバータとして作っちゃえば楽だと思う。Cと同じで良い部分はほとんど素通しで行けるし。
- 44 :
- そこまでしてCに拘る意味がわからない
- 45 :
- あの変態的にC言語には見えないObjective CでさえほとんどプリプロセッサでCに変換してからコンパイルしてたと聞くので、やろうと思えばできるんだろうね。
- 46 :
- yaccとlexを使えばできるだろう。たぶん
- 47 :
- 独自言語を開発したときなんかはとりあえずCに変換するというのはわりとある話。
コード生成とか最適化とか考えずに済むから。
昔、独自じゃないけど、とある言語からCへのコンバータ作ったよ。
楽しかった。
- 48 :
- コンパイル前にソースを別のソフトで変換、置き換えさせて・・・
- 49 :
- そしてCにもどるネズミの嫁入り
- 50 :
- BNFとyaccのお勉強から
- 51 :
- #define ARR_NAME(n) arr##n
int arr0 [] = {0,0,0};
int arr1 [] = {1,1,1};
int* select_arr(int i){
return ARR_NAME(i);
}
これはどうしてコンパイルエラーになりますか?
ちなみにreturn ARR_NAME(0)だと正しく動きます。
- 52 :
- タイミングの問題だ
#defineはコンパイル前に解釈されるが
関数仮引数の値は実行時に渡される
実行時とはコンパイル〜リンクまで全て終わった後の話だ
だから関数仮引数の値を#defineで置き換えることができない
- 53 :
- arriという変数はない。プリプロセッサでは変数の中身までは見られない。
- 54 :
- 分かりやすかったです。ありがとう。
この機能の代替として良き方法はありますか?配列のdimを増やすしかないですか?
- 55 :
- 次元を増やすのがベストだろう。
- 56 :
- 配列変数名はコンパイル時には分かっているのだから
その配列のアドレスを格納したポインタ配列を用意してやる
- 57 :
- >>55
これに1票。
- 58 :
- __、
iー'゙゙゙゙''''ー-,/^´ ゙';
| ゙ゝ....‐ .}
! |,
i____________......r'".'''゙ヽ . ..,,、
,,. -/ `'ー | .' 、
,..-'" l゙ __.. -''′ ./
. ,/ .`''''〜- ....---''''"゛ ,/
/.,, ,,..r'"
`''ー、,、 _,,,-'" `!、
/'r‐、 ,/´ /゙゙', ヽ
/ レ'゙ ´゙リ´ . `^^゙゙゙゙゙゙厂j .! │ . l
/ | .l. 丿/ / . / !
l ! .,,....--ー'''''''″ / .| (、 . !
_ .ィ‐¨゙゙'广゛ ...... ./ ,ノ.l. `'ィ ..,,_/
..-‐'"゛ 'l_゙'ーノ`' ..........,,_ .,, -" / │ .! ゙''''-.
.i''i ヽ、 / .! !
,)イ : ..,,,,,>u;;;;,、.__ _,,,.. / | "
/ . 、 ! .` |
!, ,!
." ゙
- 59 :
- それは増やさなくていいから
- 60 :
- グローバル変数を宣言する時、ヘッダファイルでextern int hogehoge;ってするよね。
*.cからヘッダファイルをincludeすると、
extern int hogehoge;を毎回書いたのと同じ状態になるの?
- 61 :
- そうだよ
includeはファイルをそのまま展開するだけ
- 62 :
- >>60
被参照側(メイン)に int hogehoge と書く
参照側(サブ)には extern int hogehoge と書く
これが基本です、*.h を使うのなら
*.h に extern int hogehoge と書く
被参照側(メイン)に int hogehoge と書き、*.h をインクルード…@
参照側(サブ)は *.h をインクルード
@でヘッダと実体に矛盾がないかチェックします
- 63 :
- >>61-62
ありがとうございました
- 64 :
- お前がC言語を 使う前に
言っておきたい 事がある
かなりきびしい話もするが
俺の本音を 聴いておけ
初期化前の変数を 使ってはいけない
gets()関数も 使ってはいけない
文字列の長さと 配列サイズは別物だ
使い終わったバッファは ゼロクリアしろ
できる範囲じゃなくて 全部やって
https://twitter.com/satoru_takeuchi/status/1176429522687676416?s=03
(deleted an unsolicited ad)
- 65 :
- >>64
> 使い終わったバッファは ゼロクリアしろ
これは要らんやろ
- 66 :
- パスワードやらなんやらの機密情報を保存したバッファは解放前にゼロクリアしようねという話です。
任意のバッファという意味ではありません。失礼しました
- 67 :
- 物凄く初歩的な質問で申し訳ないのですが
1%5のような余剰計算をした場合解は5になるのでしょうか0になるのでしょうか
- 68 :
- すみません自己解決しました
- 69 :
- それC言語固有の話じゃないし個々にやるべきかプロセス毎にやるべきかとかのポリシーもあるし
- 70 :
- >>66
元のツイートした本人か。
ここ見に来ているとは思わなかった。
- 71 :
- ゼロクリアだとそこだけ異様にキレイなので逆に重要な値が入るものと察知される
乱数値でクリアすべき
- 72 :
- >>71
すごいコストがかかるよねそれ・・・
- 73 :
- 一々乱数計算しなくても数パターン乱数表つくってメモリコピーでもいいんじゃね?
- 74 :
- そもそもゼロクリアされてるbss領域なんて重要なもの以外にも大量に存在してるので攻撃者がピンポイントで判断することなどまず不可能。
逆に綺麗すぎる乱数のほうが目立つ。
- 75 :
- そこだけにするからバレると言うなら全部ゼロクリアすればいいってことでしょ
> 使い終わったバッファは ゼロクリアしろ
> できる範囲じゃなくて 全部やって
- 76 :
- 今の流行りは不変プログラミング
スコープが短い云々ではなく使い捨て
再利用なんてしない
- 77 :
- アメリカ国防省のDoD5200.28-Mとかね
- 78 :
- HDDだと少数回のゼロクリアじゃデータ復旧される可能性が残るけどメモリだったらその心配はないのかね?
- 79 :
- >>78
DRAMはリフレッシュがあるので原理的に不可能な気がする。
SRAMもフリップフロップなら不可能な気がする。
- 80 :
- スワップされてディスクに書き込まれたら終わりなのでスワップされないようにする必要がある。
- 81 :
- windowsの細かな動きがわからんけどスリープとかでメモリ内容を全部ディスクに保存する動きしない?
するなら言語レベルではどう頑張ってもディスクにデータを書き込まずにスルーする術なんてないんじゃなかろうか?
ということは漏洩防止目的でバッファをゼロクリアする意味は無い?
windows以外は知らん
- 82 :
- スリープ処理って関数実行中でも起きるの?
メッセージ待ちとかで起こると思ってた。
- 83 :
- 多分priemptされてたら実行状態でも普通にswap outされるだろうな。
- 84 :
- スワップに書いてある内容がどのプロセスのものかをどうやって知るつもりなんだろう…
てかそんなのがわかる状況ならそもそもセキュリティうんぬん言ってもしょうがないと思う
- 85 :
- Linuxにはmlock()がある。
https://linuxjm.osdn.jp/html/LDP_man-pages/man2/mlock.2.html
多分他のOSにも似たようなのはある筈。
なければ高度なセキュリティが必要なプログラムは作れない。
- 86 :
- サスペンドでメモリ内容が全てディスクに書き込まれるような場合は暗号化サスペンドイメージを使うように予め設定しておくしかないようだ。(もはや言語の問題ではない。OSの問題)。
- 87 :
- 最終的にはOSやらハードウェアファームやらのレベルの話に行き着くんで上位レイヤーでの完全対応は無理
ならば他アプリが自アプリのバッファにアクセスできないよう下位レイヤーが保証してるならバッファクリアは不要ということになる?
そんなレベルで心配が必要なことは個人的に触ることは無いと思うけど
- 88 :
- 関数ポインタの書式と宣言方法がわからぬ(´・ω・`)
だれか助けてクレメンス
- 89 :
- ここで講義始めるわけに行かないんだからもっとspecificに頼むよ
- 90 :
- Makefileなどに書かれているCCって「C Compiler」の略でしょうか?
- 91 :
- UNIXのccコマンドじゃね?
- 92 :
- http://www2.scphys.kyoto-u.ac.jp/BIRDnet/manuals/A1_BIRDintro/cc1.html
C コンパイラーっぽいですね
- 93 :
- ピザ好きな不老不死の女の子かと思った
- 94 :
- 250億分の1のドム?
- 95 :
- Card Captor
- 96 :
- さくらちゃん!
- 97 :
- Chupa Chups
- 98 :
- このスレこんなに過疎ってたっけ
- 99 :
- まずは燃料投下する必要があるんじゃないかな。C言語はダメとかクソとか、あるいは引数にvoidなんて見たことないとか、そういったことを書けば火が付いて3スレぐらいあっという間に消費すると思うよ。
- 100 :
- void君呼ばれてるよ〜
100〜のスレッドの続きを読む
[特設]サマータイム対応相談室
proce55ing プログラミングアート全般
音声合成プログラムを作りる
プログラミング始めたいんだけどどこ言語がいい?
Borlandにはやられた...
【実験台】 Python 3.0 のお勉強 Part 1 【非互換】
テスト
オブジェクト指向ってクソじゃねぇかよPart4
【日本語不自由】Eclipse Pleiades プラグイン
C++相談室 part150
--------------------
【3鯖】戦国IXA(イクサ) Part1
点描トントントントン!φ(*・∀・*)ノ
韓国の盗撮被害深刻、ソウル市で公衆トイレの巡視員を大幅増員
実況 ◆ テレビ東京 14676
中小零細ワンマン社長の生態を語ろう 2人目
モーニング娘。さん狼の外ではボロクソに言われてしまう
ららマジ第301楽章
【悲報】 新潟のF欄大学がNGTとコラボしてしまう
三沢基地航空祭。空自F-35A展示飛行キタ━━━(゚∀゚)━━━!! 人が押し寄せ地獄の三沢になりそう。
。oO広島のたこ焼&お好み焼屋Oo。
【NGT48】奈良未遥応援スレ☆17.1【みはぴよ】
SJ393
富山市都市開発総合スレッド 35
【トゥーロン】東京五輪代表 part14【U-21】
お前らギター何本買えば気が済むんだ!107本目
ウマタンとはちぶさんれん専用隔離スレ3
$$$ 西村京太郎 part9 $$$
人工知能はゼルダの伝説をクリアできないだろうな
【SKE48】松井珠理奈☆アンチスレ1【じゅりな じゅりたん AKB48兼任解除 SKE専任】
【3DS】ガールズモード総合54着目【DS】
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼