◎正当な理由による書き込みの削除について: 生島英之とみられる方へ:
C言語なら俺に聞け 148 ->画像>12枚
動画、画像抽出 ||
この掲示板へ
類似スレ
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/tech/1537347410/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。
JPCERTに書いてある
> DCL12-C. 抽象データ型は opaque な型を使って実装する
これ、言葉遣いが JIS に準拠してないね
- opaque な型
+ 不完全型
あのね opaque を「おぱきゅー」と読むとね、
中がどうなっているか見えないって感じがヒシヒシ伝わるんだよ。
>>5 寧ろ向こう側が透けて見えて意味を取り違えそうな…
不可視を不完全と呼ぶのはちょっと良くないと思うわ
まあ視点が違うんだけども
みんなmusl libcとか使ってたりする?
プロジェクトの内容だけみると けっこう良さげなんだけど
あまり日本語の情報を聞かないし 実際はglibcとかが大半なのかな。
c言語本格入門のリスト構造(単方向リスト)が理解できず困っています。
書籍には図を書けば理解できるとあり、ソースにprintf関数をところどころに入れて、ポインタの動きを追いかけていたのですが、余計こんがらがってしまいます。
他のサイトや他者の質問が掲載された掲示板なども参考にしましたが、さっぱりわかりません。
図を描いても理解には繋がりません。
プログラムは250行くらいあり、掲載出来る様なサイトがあれば誘導お願いします。
ポインタの*ptr_now、*ptr_before、*ptr_new の動きと役割が理解できれば、前に進めると思うのですが、知恵を貸して下さい。
nowが今いる所でbeforeがさっきいた所でnewが新たに作る所?
>>18 now と before は作業用領域で、newは名前とかを格納しています。
>>18 とある位置に新しいデータを挿入するサンプルコードなんじゃないか?
newが新たに挿入しようとするデータのアドレス、
nowが挿入先の直後のデータのアドレス、
beforeが挿入先の直前のデータのアドレス。
(単方向リストへのデータ挿入は新しいデータを挿入する位置の前後のデータのアドレスが必要のため)
ところでnowってスケジュールリストか何かなのか
>>18 努力しているようだが、色々おかしい。
> ソースにprintf関数をところどころに入れて、ポインタの動きを追いかけていたのですが
ポインタの『動き』ではなく、ポインタの『中身』を追いかけろ。
ポインタは自然言語で言う「ポイントする(指し示す)もの」でしかないから、
正しい物を示しているかどうかだけであって、
それはポインタ自体ではなく、『中身』を見ないと判定出来ない。
> 単方向リスト
> *ptr_now、*ptr_before、*ptr_new
単方向リストならポインタは一つだけだし、
> now と before は作業用領域で、newは名前とかを格納しています。
名前の付け方が絶望的におかしい。
多分君の理解が間違っているだけだと思うが、
もしその理解が正しくて、ガチでこんな名前を付けているソースなら、
その本は今すぐ捨てるべきだ。
これはソースを上げれば誰かが見てくれるだろう。
(多分
>>22が当たりだろう)
当たり前だが、
1. まず、0,1,2,3... とリストに入れて、それを表示(リストアップ)出来る関数を作れ。
2. 次に、その関数を用いて、挿入等したとき、期待通りにリストアップ出来るか確認しろ。
3. それでバグっているようなら、その後でいちいちIDE等で止めてポインタの値を確認するんだよ。
多分お前はデバッグの仕方もおかしい。
ただまあ正直なところ、このレベルの初心者ならリストなんてどうせ使わないし、
スキップしても構わんぞ。いちいち全部やらなくてもいい。
そんなことより、ゲームを作りたいのならそのゲームを作る方向目指してコーディングしろ。
そのうち、ポインタ等の意味も分かってきて、今回の問題なんて自然に解決出来るようになる。
>>22 ちなみに細かいようだが、
> (単方向リストへのデータ挿入は新しいデータを挿入する位置の前後のデータのアドレスが必要のため)
実際の所、単方向リストなら
struct List {
T value; // または T* ptr;
T* next;
};
だから、ループは now と next だけで構成しないと筋が悪いんだけどね。
ソート済みリストでデリミタがヌルポなら、
while (now->next && value <= next->value) now = next; // 同値なら挿入順
で now を確定させ、now と next の間に挿入する。
nowは「今」、newが「新」として、beforeは余計だね。
何かの説明をする為なのだろうけど、余計におかしくなってる。
(挿入するのは『nowとnext』の間であって、『beforeとnow』の間ではない)
>>24 駄目な事を駄目だとはっきり言っただけだ。
怒られたことのないゆとりには噛みついているようにしか見えないのかもしれないが、
このレベルの駄目っぷりを駄目出ししてもらえない方が問題だろ。
これが許容出来ないのなら、コテハン制の他サイトに行けよ。
どんなアホな投稿でも優しく教えてくれるだろうさ。
ただそれが本人の為になるかどうかはまた別だが、ゆとりにはお似合いだ。
右も左も分かってない馬鹿なんだから普通にIDE使えよ。
printfデバッグなんて(IDEが有料だった昔はさておき)
今のそのレベルの初心者がやるもんじゃない。
まあしかし、お前がそういうのならお前が導いて見せろ。
出来もしないのに文句だけ言うのもゆとりの特徴だとも思うがね。
てゆーかマジな話、250行って何だよ?
27のリストなら精々50行だろ。
色々根本的におかしい。
本ではなく、18が根本的に間違ってるんだと思うが。
>>21 名前ってまさか構造体の名前じゃないよね・・?
>>18 その250行と、printf() を入れてみたけれどもうまくいかなかった、という printf() の挿入場所をこちらに貼ってください
https://ideone.com 話はそれから
うまい釣りだ。このままじらしてじらしていつまでもソースを公開しなければこのスレは活性化して書き込みで溢れあっという間に3スレぐらい消費するだろう。流石としか言いようがない。
低学歴知恵遅れには質問の意味が理解できない
普通に質問の内容を再現すればだいたいこうなる
typedef struct tag_aho_list_t {
char new[0x10];
t_aho_list_t* next;
} t_aho_list_t;
ptr_new = (t_aho_list_t*)malloc(sizeof(t_aho_list_t));
strcpy(ptr_new->name, "aho1");
ptr_before = ptr_now;
ptr_now = ptr_new;
ptr_before->next = ptr_now;
ptr_new = (t_aho_list_t*)malloc(sizeof(t_aho_list_t));
strcpy(ptr_new->name, "aho2");
ptr_before = ptr_now;
ptr_now = ptr_new;
ptr_before->next = ptr_now;
>>33 お前も絶望的にダサいコードを書くな。
追加なら、
> ptr_before = ptr_now;
> ptr_now = ptr_new;
> ptr_before->next = ptr_now;
ではなくて、
ptr_now->next = ptr_new;
ptr_now = ptr_new;
だろ。
つか、単方向リストで before を使う時点で間違い。
>>36 マジでIDE使え。
そして貼るときはlanguageをCにしとけ。シンタックスハイライトが変わるから。
で、どれが分からんの?
> enter
> find
> delete
> show_all
> delete_all
mainはこの際分からなくていい。
最初に理解しないといけないのは show_all だ。
ただし細かいことを言ってもキリがないが、
> void show_all(void)
なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
さらに酷いのは show_all 内でグローバル変数 address を掴んでいること。
普通は void show_all(tag_address* ta) だよ。
そうじゃないと複数のリストがあったときに使い物にならないだろ。
マジな話、このソースのレベルの本なら捨てた方がいい。
俺は大学の教材がいいと思うぞ。
(読んでないが)リストならググったら東工大とか出てきた。
http://www.is.titech.ac.jp/compview/clang/chap11.html voidはアリだぞ。
仕事だとなぜかvoidを書けと言われるわ
>>37-38 void show_all() が引数無しの意味になるのはC++。
Cだと show_all(...) と同じ意味になって何渡してもコンパイル通っちゃうからあぶない。
>>38 マジかーと思って linux kernel のコード見たが、書いてるな。
そして K&R 見てみたら、なんとこれも書いてた。
旧来の記法なら書くのが正しくて、物によってはコンパイル通らないとかか?
とにかく、 void がクソだというのは取り下げる。
>>39 > Cだと show_all(...) と同じ意味になって何渡してもコンパイル通っちゃうからあぶない。
マジ?今まで聞いたこと無かったわ。
しかし ( ... ) と同じ意味なら例の va_list を使う糞コードになるから、
コンパイラのチェックが甘くなるとはいえ、間違って使うって事はなさそうだが。
まあとにかくありがとう。
>>36 何度も言ってるがマジでIDE使え。
次にマジでこの本はソースがおかしいから捨てた方がいい。処理のフローがクレイジーだ。
何かおかしな規約に沿って書いているように思える。
178-205行目は、普通なら以下。
while(ptr_now != NULL && no >= ptr_now->no) {
if (no == ptr_now->no) {
if (address == ptr_now) address = ptr_now->next;
else ptr_before->next = ptr_now->next;
free(ptr_now);
return 0;
}
ptr_before = ptr_now;
ptr_now = ptr_now->next;
}
return -1;
>>36 ちなみに一応ちゃんとポインタで書いておくと、以下な。
whileの条件は分けた方が分かりやすいか?
書き込みターゲットは一つに纏める。
int delete(int no, tag_address* ptr_now) {
tag_address** ptr_tgt = &ptr_now;
while(ptr_now != NULL) {
if (no == ptr_now->no) {
*ptr_tgt = ptr_now->next;
free(ptr_now);
return 0;
}
if (no < ptr_now->no) return -1;
ptr_tgt = &ptr_now->next;
ptr_now = ptr_now->next;
}
return -1;
}
すまん、42は間違い。
引数を&で受けても意味無いな。書き直す。
>>36、42の訂正版
int delete(int no, tag_address** ptr_head) {
tag_address** ptr_tgt = ptr_head;
tag_address* ptr_now = *ptr_head;
while(ptr_now != NULL) {
if (no == ptr_now->no) {
*ptr_tgt = ptr_now->next;
free(ptr_now);
return 0;
}
if (no < ptr_now->no) return -1;
ptr_tgt = &ptr_now->next;
ptr_now = ptr_now->next;
}
return -1;
}
君には余計に分かりにくくなったかもしれないけど、こんな感じ。
まあ頑張れ。
>>36 enter関数も作りがおかしい。
25で言ったとおり、
> (挿入するのは『nowとnext』の間であって、『beforeとnow』の間ではない)
このソースは before と now の間に挿入しており、明らかに間違ってる。
マジでこの本はゴミだから捨てろ。
まあいいんじゃね?
処理内容毎に塊を分けて上から順番に並べているのは他人にわかりやすく説明するために都合がいいのだと思う。
きっと書籍では、N行目からM行目まではこんなことをしてます、とか、塊毎に処理内容のコメントが記述されてるのではないかと思う。
>>46 いやこれはさすがにアウトだろ。
実際部下にこのコード出されたら絶句するだろ。
178行目と194行目のヌルチェックなんてダブってるし、マジで意味無い。
頭が悪い奴が一生懸命書いたコードだぞこれは。手本にするには酷すぎる。
delete関数は筆者には難しすぎて、異常系を一つずつ外して行ってるから無駄にダブってる。
だけどこの規模でこれだと絶望的だろ。
マジでこの本は捨てた方がいい。
18が読めないのは18の技量の問題だけど、
読みやすいコードと読みにくいコードというのは実際にあって、
要するに腕前がいい奴が書いたコードは一般的に読みやすく、下手くそが書いたコードは読みにくい。
(勿論高速化等かけた場合は若干読みにくくなるが)
頭が悪いのなら、関数を分けて分割すべきであって、
breakして下に無理矢理繋げているから意味不明なコードになる。
なお高速コードは以下。
int delete(int no, tag_address** ptr_head) {
tag_address** ptr_tgt = ptr_head;
tag_address* ptr_now = *ptr_head;
while(ptr_now != NULL && no >= ptr_now->no) {
ptr_tgt = &ptr_now->next;
ptr_now = ptr_now->next;
}
if (ptr_now != NULL && no == ptr_now->no) {
*ptr_tgt = ptr_now->next;
free(ptr_now);
return 0;
} else return -1;
}
もともこもないこというけど
カーネルの list.h 使え
C言語で
A,B,C,D,E,F,G,H,I,J,K,Lの12個のペアを、3個ずつの4つのグループに分ける場合
例えばA,BとA,CとD,Eは同じグループに入れないとして、実行時には(ADF,BCE,GHI,JKL)みたいな感じで返すプログラミングの書き方の例を教えてください
>>39が言ってることすら知らないID:16ZpsTnK0が偉そうに講釈たれてて笑うわ
>>49 その例だと目的が分からないから、
それを何に使いたいのか具体例で書いてくれ。
>>45 このソースでは「beforeとnowの間にnewを挿入」するenter()で正しく動作するね。
リストの定常状態で、各要素はメンバnoの値で昇順整列している。
ポインタnextのつなぎ換えをする時点で、
beforeのnoは新要素のnoより小さい、nowのnoは新要素のnoより大きい、
よって new->next = now, before->next = new と格納すれば
before->no < new->no < now->no の順序が維持される。
ただし境界条件(リストの端っこの処理)はここでは考えていない。
変数やメンバの命名をもう少し工夫すれば…と思うけど。
この投稿を書いててnewとnow、メンバnoで混乱してきた。
リスト操作に特化した関数を作ればいいのに
リスト操作といろんな処理を混ぜ込むから見通しが悪くなってる
教育目的ならなおのこと美しく書かないといけないのに
>>37 >> void show_all(void)
>
>なんだこれ?引数 void って初めて見たぞ。文>法的にありなのかこれ?
この程度の知識でも偉そうに講釈垂れる事が出来るのがこのスレです
>>52 そりゃ糞コードでも動くだろうさ。
しかし教科書でこれはない。マジであり得ないくらい酷い。
必要のない変数を作って保持してるだろ。
走査は25に書いたとおり、(書き落とした点を修正するが)
while (now->next && value <= now->next->value) now = now->next;
でやるんだよ。そうすれば now と next だけの世界で済む。
enter()も頂けない。これは
>>53の指摘通り、
int insert(tag_address* ta) と
tag_address* make_new_element(int no, char* name, char* addr)
に分けないと駄目だ。
マジでここまで酷いのはなかなか見かけないくらい酷い。
部下がこんなコード書いたら当然突き返す会社が大半だと思うぞ。
例も酷い。これは List ではなく SortedList だし、
そもそもこれをやりたいのならCではなくC++でやるべきだし。
>>54 そこで俺叩きに転じてるのが逆に、お前が馬鹿である証拠だ。
このコードは擁護のしようがないくらい酷い。ど素人でもここまで酷いコードは書かない。
お前にはそれが分からないから俺を叩こうとしてる。
お前みたいな初心者は文法のことばかり気にするが、文法の細かいところは本当に関係ないんだよ。
俺はC++コンパイラを使っているから
>>39は関係なかったし、
>>38はそうじゃないから void を書くルールになってるんだろ。
そういうもんなんだよ。
文法的に問題があるケースはルールで禁止されてるか、環境で対策されてる。
まあ俺に文法知識が欠けているのは事実としても、この本がゴミなのは揺るがない。
理由は筆者が馬鹿だから、だから、マジですぐに捨てて他の本/サイトを参考にした方がいい。
嘘だと思うのなら、この事を覚えておいて、
数年後、お前らが上達してからもう一度このコードを見直して見ろ。絶句するから。
ちなみに余談だが K&R の良い点は、糞コードがないこと、余分な表現がないこと、なんだよ。
無駄を限界まで削ぎ落とした、極めて上質なコードが掲載されている。
筆者が頭が良く、一流のプログラマだからだ。
実際の所、入門書は総じてゴミだ。
これは入門書を書く奴は一般的に一流のプログラマではないからだ。
だから入門書のコードはマジで参考にしない方がいい。
今回のは特に。
お前らが上達すれば、このコードの酷さが分かるようになるだろうさ。
今回の顛末を覚えておいて、数年後に見直して見ろ。マジで。
>>57 うんそだね〜
でもどんな言い訳してもここはC言語スレだしCプラプラコンパイラと言えどCの文法書けるわけだし
初心者に偉そうに講釈垂れるならCの最 低 限の文法くらい知ってた方がいいよ
>>59 ならお前も18に対して何か為になるレスをしてから言えよ。
お前が俺に粘着する理由が分からん。
「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
>>56 これをやりたいならC++でやるべき、って
C言語の入門書のコード例なのに何を言ってるんだ?
かまってちゃんなんだろう、相手してもらって嬉しそうだ
>>61 そりゃそうだろ。
俺が文法を知らなかったことは本筋とは関係ないし、
実際、お前ら以外気にしてないだろ。
お前らは役に立つレスを全くしてないし、ただの粘着荒らしでしかない。
なお
>>39、知ってるかもしれんが以下だそうな。
> C99にて廃止予定機能となった。C11でどうなったかは不明
http://d.hatena.ne.jp/eel3/20141005/1412521223 仕様に詳しい人よろしく。
「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
>>62 その点は既にC++で対策されてるから。
書けば分かるが、その例のSortedListなら、C++で書いた方が綺麗に書ける。
C++はその点を対策した言語なのだから、当たり前だが。
>> void show_all(void)
>
>なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
以下のコード見たことありまちゅか〜?wwww
#inlcude <stdio.h>
int main(void)
{
printf("Hello World!");
return 0;
}
こういう簡単なコードの書き方なら
喜々として低学歴知恵遅れのシロウトが喜々として一杯よってくる
つか、粘着馬鹿共は誰も役に立つことを言えてない件。
お前らが俺に粘着する意味は何なんだ?
なお
>>18、一番近いのは std:forward_list でソース例は以下だが、
https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/forward_list.h 毎回思うがGNUは別の意味で読みづらいから(マクロまぶしすぎ)
今の君には無理だが、可能ならこれを読んだ方がいい。最終的な目標にしとけ。
>>37で既に示した東工大、斜め読みしたが、
1. before 関数 を使って list_add 関数を修正して p の「直後」に挿入
2. before 関数
だから明らかにこっちの方が筋がいい。
2の意味は分からないだろうが、これはコンパレーターであり、関数ポインタに繋がる。
こちらはそもそも教育の現場、やはりちゃんとしている。
こっち使った方がいいと思うぞ。
「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
低学歴知恵遅れはこの程度のコードしか
理解できないのがよくわかるわ
まず質問と関係ない内容で喜々として得意になってレスしてる
こういう簡単な内容ならめっちゃ元気
ああ、そういえば一応
>>18には直球で返した方がいいか?なら、
*ptr_now:今エレメント
*ptr_before:前エレメント
*ptr_new:新エレメント
であり、まんまそのままだ。
ただ、単方向リストで before は履歴が必要だから、このコードは筋が悪い。
単方向リストなら、出来る限り、
*ptr_now:今エレメント
*ptr_next:次エレメント
で構成されるべきで、この場合には履歴が要らないからより単純なコードになる。
そして東工大はそうだからそっちを参考にしろ、というわけ。
「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
コードがどういう書かかたされてるとか
質問してるヤツは一切してないからな
コレは低学歴知恵遅れの自分が理解できてる範囲のことを
コレは低学歴知恵遅れがひたすら連騰してるだけだからな
つまりこの質問ではどうでもいいただのコードの書き方
質問してるヤツはどういう動作をして
どうデータが格納されてるかを質問してる
低学歴知恵遅れはなんでまともに日本語が読めないわけ
まともな教育とは思えないわ。。。
(正)まともな教育を受けてるとは思えないわ。。。
(誤)まともな教育とは思えないわ。。。
つまり
まともな教育を受けてない低学歴知恵遅れが
このスレにきた初心者にえらそうにしてるわけ
わかる?
>>73 てかマジでこれが助けになると思ってるのか?
お前もしかして18なの?
なら絶望的に頭悪いし、プログラミングなんて止めた方がいい。
そしてもしこの回答を得る為にひたすら単発で煽っていたのなら、マジでウザイから止めろ。
「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
>>74 ならお前が回答してやれよw
お前も回答出来ただろうし、お前はそれが役に立つと思ってたんだろ。
よくわからんけどその本の後の方の章でそのコードを改良して双方向リストの説明でもしてるんじゃないの?
入門書とかだとよく前の章のコードの説明を元に段階的に説明していく場合があるけど
>>77 双方向リストでもこの意味分からん処理フローにはならないし、
関数ポインタを見据えている東工大の方が数段筋がいいよ。
「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
入門書だぞ?
汎用性や高速性なんて二の次どころか入門書では不要かもしれない。
ポインタの理解も危うい段階でダブルポインタとかlist.hを提示するとか狂気の沙汰だわ。
もしもID:16ZpsTnK0が入門書を書いたらいきなりハードモードでそれこそ役に立たないから即捨て間違いないわ
こんな簡単な質問の回答能力があるヤツはいないか
まずenter()関数をみなさい
まず一回目のenter()で動く箇所はココになる
while (ptr_now != NULL) {
・・・ ← ココ
}
if (address == NULL){
・・・ ← ココ
}
それ以外は
一回目と一回目以外、enter()では同じ
次にココをみなさい
if (no < ptr_now->no) {
break;
}
if (address->no > ptr_new->no){
address = ptr_new;
printf("address(enter)=%p\n", address);
}
ココでなにやってるか
次に考えなさい
https://ideone.com/F3xZFe >>36のコードをCのコードの設定にしてやったから
まずenter()とshow_all()の結果をみなさい
>>81 ならお前がまず何か役に立つ回答をしてから言えよ。
お前だって
> *ptr_now:今エレメント
> *ptr_before:前エレメント
> *ptr_new:新エレメント
は回答出来ただろうに。(何故か
>>73には感謝されてるようだし)
半角君は少なくとも自分で説明しようとしている分、お前ら粘着単発馬鹿共より数段ましだぜ。
ダブルポインタ云々ではなく、18はまず、
1. リスト構造自体を理解出来ていない
2. 多分ポインタも怪しい
3. そもそも全くプログラムが追えてない
だから、IDEで全関数の頭にブレークポイントで気が済むまでステップ実行させるべきだろ。
printfデバッグなんて何でこいつがやる必要があるんだ?
このレベルの入門書ならIDEの使い方から教えるべきだろ。
そして教科書のコードはそれとなしに汎用性があるコードであるべきなのさ。
東工大はこれを満たしてる。この本は全然駄目だ。その違いだよ。
勿論東工大は最初からEcilpse + CDTだ。
http://www.is.titech.ac.jp/compview/clang/chap1.html 「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
ただマジな話、18はプログラミングは全く駄目なタイプだと思うぞ。
数学の素養/素質がない奴は、努力しても上達しない。
プログラミングは暗記で対応出来るものではないから。
プログラミング自体を止めた方がいいと思うよ。マジで。
printfで十分わかるからな
IDEは低学歴知恵遅れに必要
>なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
>なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
>なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ? 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
むしろ
ID:16ZpsTnK0 ← コイツ
が一番プログラミングに向いてない
その自覚がない
しかも相当自分の頭の悪さの自覚がない
致命的
そもそもデバッグライトは
プロのプログラミングの世界では重要な技術要件だからな
問題が発生したとき
速やかに問題点の発見ができるようにする助けになるのが
デバッグライト
問題が発生したとき
まずデバッグモードでコンパイルしてデバッグライトの出力して
なぜ問題が発生しているか原因をすみやかに発見する
幾重にも重なった巨大なシステムになるほどデバッグライトの出力は重要になる
役に立つわかりやすい適切なデバッグライトを書けるか書けないかで
だいたいそいつのオツムの程度が分かる
今日はいつもの「低学歴知恵遅れ」の人 ID:PGp2AKzL0 と
新たに登場した ID:16ZpsTnK0 の東工大ファンの人がいるのか。
さらにいえば低学歴知恵遅れに作らせると
一切ログが出力されない知恵遅れなシステムになる
エラーとしか出力されない
もしくはエラーが発生してハズなのに正常終了して
停止せずに次の処理にいってしまう
一応東工大の全部読んだぞ。
俺は東工大の教材の方がずいぶんましだと思うが。
概ね初心者向けによく書けてる。(当たり前だが)
> int main() {
> struct schedule* list = NULL;
> list = list_add(list, 2009, 1, 1, 0, "元旦");
毎回書き戻すこのインタフェースについては若干検討の余地ありだけども、
ダブルポインタも難しいというのならこれでも致し方無しか。
ただこれだとインミュータブルの言語では複数ヶ所から使用出来なくなるから、
やはりオブジェクト指向で list->add() と書く癖を付けた方がいいし、
リストなんて使いたければ素直にC++使えってことだと思うけどね。
「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
まあ
>>36のコードのゴミっぷりが分からないうちは大口叩くのは止めとけ。
そしてこれを覚えておいて、数年後に見直してみろ。
俺が何言ってたか分かるから。
>>91 ファンではないぞ。偶々ググったらヒットしただけ。
ただ、概ね大学の講義資料は良く出来てるよ。
これまでも、他大学を含めて何度もURL貼ったことがある。
(良く出来ているのが検索上位に来るだけかもしれないが、
それでもそれを有り難く利用させてもらえばいい)
>>85 えー、あなたより先にそれ答えたけど。
単発idはnvno業者のせいなんで文句言われても困る。
ちょっとポインタで躓いたくらいでやめたほうがいいとかどんだけハードル高いんだよ。
あなたは下っ端が向いてそうだから間違っても後輩の教育係にはならんようにな。
まずオマエの場合、
自分がゴミでクズの低知能の低学歴知恵遅れの自覚がない
そこが問題
講義用のプリント読んでもその程度だからな
とりあえず、人に説明するのにやたらと攻撃的だったり高圧的だったりする奴は向いてないな。
低学歴知恵遅れがなにも理解できてないのに
分かったつもりになれる
そういう意味で東工大のプリントは優秀
最近話題の池上と似ている
頭悪い池上のいってるどうでもいいことや池上の本を読んで
なんか分かった気になれるのととても似ている
>>97 お?お前のレスってどれ?
とりあえず本日分全部言って。(IDと同じ条件になるように)
「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
まあこういうのは結局かけた時間だから。
同じこと繰り返しててもあかんけどね
まずオマエはな
本格的なプログラミングより
自分の本格的な頭の悪さを自覚したしたほうがいい
>>97 > ちょっとポインタで躓いたくらい
ではないぞこれは。
そして俺の経験上、プログラミングは
A. 勝手に上手くなる
B. 徐々に上手くなる
C. 全く上手くならない(本人が努力してても)
のタイプがいる。以前は不思議だったのだが、最近だんだんとこの理由も分かってきた。
で、悪いが、18はCタイプだ。
というかそもそも昨今の「全国民がプログラミングを」みたいなのが間違ってて、18はそれの被害者だ。
と見てるからの助言だが、君が18を正しく導けるならどうぞやってみてくれ。
それについて俺が反対する理由もないし。
「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
デバッグライトすら書けないヤツが
自分が十分なプログラミングができると思い込んでるわけ
典型的なダメな使えないヤツの典型だからな
オマエ自身が向いてないまず自覚をもつが先だ
とてつもない低学歴知恵遅れで底辺である自覚ももつべき
>>105 C++は最近は迷走中だが、少なくとも改善版Cであることは事実なんだよ。
SortedList ならクラスを使えば綺麗に実装出来る。
文法についても問題があった
>>39について対策済みだろ。
いまいち最近のお前らが言語間で争う意味が分からない。
俺はbetterC派だから、生粋のCerからも生粋のC++erからも叩かれる存在ではあるのだが、
昔はこんな事なかったと思うんだけどね。
「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
まず頭が悪いヤツに言語の特性なんかわかるハズがない
それぞれの言語すら分かってないヤツに
その特性の差なんか分かるはずがない
↓こんなことを自信満々で書いてる低学歴知恵遅れだからな
37 名前:デフォルトの名無しさん (ワッチョイ f94f-yqSl)[sage] 投稿日:2018年09月22日(土) 01時42分06秒64 [深夜] ID:16ZpsTnK0 [2/24] (PC)
> void show_all(void)
なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
さらに酷いのは show_all 内でグローバル変数 address を掴んでいること。
普通は void show_all(tag_address* ta) だよ。
そうじゃないと複数のリストがあったときに使い物にならないだろ。
>>97 結局明示無しか?
まあ
>>72-73の流れなら、
少なくとも73は「未回答、または回答不十分」だと見なしていたわけだよ。
「C言語本格入門」はゴミだから今すぐ捨てろ、マジで。
たとえば夜間バッチが動いて
エラーが発生する
ID:16ZpsTnK0 ← こういうヤツに
好きに作らせるとなんでエラーが発生したわからない様な
テロコードを書く
しかも無意識、そんなコード書いてもなにが悪いかもわからない
こんなヤツにコードを書かせる場合、強力な監視が必要になる
その労力に半端ないぐらいのムダが発生する
ポインタは入門書読んだときは簡単と思ったけど規格書読んでみたら難しいと思ったな
例えばC++でtype punningを規格に沿った形で実現できるのか
memcpy使っても規格を見ると怪しいと聞いてもうね どうすりゃいいのよ
むしろポインタなんかどんなアホでもすぐに理解できる
そっから先で道を誤るヤツのほうが多い
低学歴知恵遅ればっかりのこのスレみればわかるとおり
だいたいアホはシステムというもんが分かってないからな
シンタックスをしってて、動きさえすれば
それでなんでもできるもんだと勘違いしてる低学歴知恵遅れのスクツがココだからな
低学歴知恵遅れの万能感は半端ない
低学歴知恵遅れはどんだけゴミクズでどんだけ自分が致命的に頭悪いか
その自覚がない
>>112 unionのことならC++では「絶対に書け、でないと動きを保証しない」なんだろ。
俺はそれは糞で、C流の「つべこべ言わず書いたように動かせ」の方がいいと思ってる。
C++は「書いたように動く」事よりも、「自動的に速くなる」方を選んでる。
それでいい分野も多いが、不味い分野もある。
だから結果的に棲み分けされてしまう。
以前C++スレで出たはずだが、
俺はあの仕様の問題は、関数ごとに最適化条件を変えられないことにあると思うよ。
unionなんて触るのはごく一部の関数だし、そこだけ最適化を解ければ済むこと。
C++は「ソースはこう書くべき」なんてやってるからそういうのを認めない。
これが良くない。
普通にunionなんか使いまくられてる
if (::setsockopt(m_i_server_socket, SOL_SOCKET, SO_REUSEADDR, (const char *)&i_on, sizeof(int)) < 0) {
::perror("setsockopt(SO_REUSEADDR) failed");
return -1;
}
struct sockaddr_in t_sockaddr_in;
::memset(&t_sockaddr_in, 0, sizeof(struct sockaddr_in));
t_sockaddr_in.sin_family = AF_INET;
t_sockaddr_in.sin_port = ::htons(u_port_);
t_sockaddr_in.sin_addr.s_addr = ::htonl(INADDR_ANY);
if (::bind(m_i_server_socket, (struct sockaddr *)&t_sockaddr_in, sizeof(struct sockaddr_in)) < 0) {
::perror("bind() failed");
finalize();
return -1;
}
なんで低学歴知恵遅れは自分の極端に狭い了見で
すぐにしったかすんの?
低学歴知恵遅れは低学歴知恵遅れの自覚は一切なく
自信満々でテキトーなことをいうからな
>>115 C++はunionでもだめらしい なので memcpy でもそれも怪しいと
どこだっけ C++ カンファレンスなんかで出ていた話題
テストをたくさん作って開き直るしかない面がある
C99とgcc拡張ではokなんだけど
>>119 見ての通り、俺は規格に詳しいわけではないので、
申し訳ないがそれ以上は分からん。
ただ、C++もバリバリの実用言語だから、
何らかの手段は提供しているとは思うけど。
要するになにも知らないわけか
で、オマエはなにをしっててこのスレに書きこんでるわけ?
つまり低学歴知恵遅れが
とりあえず行き当たりばったりのコードをとりあえず書いて
IDEでトレースデバッグならできますと
そう自己紹介してたワケか
まさに
結果としてとりあえず動きさえすればいいという低学歴知恵遅れの思考回路といっていい
まさに地雷
決着なんかついてない
低学歴知恵遅れのレスなんか情報価値ゼロだからな
ココまでのレスは低学歴知恵遅れの落書き
ただの低学歴知恵遅れのノイズ
オレのエレガントな回答(
>>82-83)に質問したヤツが
このあとどう考えることができるかがココでは重要なワケだからな
低学歴知恵遅れ君が見事にスルーされててワロタ
お前ら流石だなw
スルーじゃない
オレのレスは一切のスキがないほどカンペキなレスだからな
オレのレスにレスすらできない
ミスを取り繕おうとして必死に足掻く人間の尊い姿が見れました
今日はこれでおなかいっぱいです
>>40 > とにかく、 void がクソだというのは取り下げる。
いや、voidはクソだぜ
K&R Cでは「引数が0個でなければならない」とか
「返却値は使用禁止」といった概念がなかったので
(void) のようなシュールな構文を後付けせざるを得なかったが
() で引数0個にならないというクソルールを上塗りする形で登場したものだ
クソルールの延長はずっとクソだ
ぜんぜん違う
プロトタイプ宣言を厳密にできるようにしてるだけだからな
昔のCはプロトタイプ宣言すらなかった
引数の数や順序の誤りがかなりのバグの温床になってたからな
やっぱりな低学歴知恵遅れは
なにも知らないくせにテキトーなことばっかりいうのがよくわかる
低学歴知恵遅れが二匹以上あつまると
ものすごい頭悪いレスに対してでものすごい頭悪いレスで
スレが成立することになる
>>133 それについては、ここにいる大半の初心者も含め、
・CコードをC++コンパイラでコンパイルする
で解決出来るだろ。
当たり前だが問題になる仕様は修正されているし、
C++と非互換部分に当たったらその時に考えろ、でいい。
勿論C自体の仕様が変更される方がいいが、それをここで言っても意味無いし。
C++98辺りまでは(C++03もか?)完全上位互換だったはずだし。
>>134 おーいバカ、息してるか?
135に即レスされてんな
オマエはその初心者にすら到達してない
その自覚がない
基本的なことすら分かってないくせに
しょうもないエイリアシングの受け売り日記読んで
それでなにか分かった気でいるワケだからな
いやオレが書いてることはなにも間違ってない
なにも書かなかったら int 返す関数にされてしまうからな
ホントに低学歴知恵遅れは
なにも分かってないらしいわ
低学歴知恵遅れが
ムリして頭いいふりしようとしても
頭悪いのなんかすぐにバレるからな
残念なことに
本人は気付いてないかもしれないが
いちいち頭悪いですと自己紹介するからな
残念なことに
まともな教育を受けているば
低学歴知恵遅れセンサーの感度はよくなる
レスみれば
コイツ低学歴知恵遅れとすぐに分かるワケ
コレはマジな話だからな
低学歴知恵遅れにはそういうセンサーは内臓されてない
そいつ自体が低学歴知恵遅れだからな
>>137 > C++98辺りまでは(C++03もか?)完全上位互換だったはずだし。
おい大丈夫か?
半角のほうが横文字が見た目冗長じゃなく読みやすいから
行あたりの情報量が多く視認性もよい
>>141 ホントに青二才は
なにも分かってないらしいわ
青二才が
ムリしてベテランのふりしようとしても
ニワカなんかすぐにバレるからな
残念なことに
本人は気付いてないかもしれないが
いちいち頭悪いですと自己紹介するからな
残念なことに
しかしな
キミラが相当頭悪いというのは
間違いなく事実だからな
残念なことに
その自覚がないのが相当致命的であるだけであってな
ID:1VdbYLFX0 ← コイツは低学歴低知能底辺の高齢ITドカタ
オレぐらいのレベルになると
レスでだいたい社会的特徴まで
概ね推認できるようになる
>>148 始まった頃のパソコン通信だと、
アルファベットとカタカナしか使えなかったっけ
一度これをやってみてくれないか?
本当に行当たりの情報量が多く、視認性が良いか確かめてみて
漢字がないと読みづらいにきまってるだろ
頭悪いの?
KANJI ga naito yomizurai ni kimatterudaro
ATAMA WARUI NO?
全部空白にすると読むストレスが大幅に軽減されるよ。
>>148 それを根拠に一人だけしかやってなくて目立つ行動を続けてきたというワケか
なるほど。
>>37 >なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
これが今年の大賞候補
>>148 お前さんのレスは毎度毎度同じような汚い言葉繰り返して冗長なんだから、まずそれを治せよ。
行当たりの情報量、かなり低くなってるぞw
すごい。もうこんなに書き込みが増えているなんて。さすが
>>18。
まさかこんなにすごい釣り名人がこのスレに現れるとは思わなかった。
まあ、質問者は運が悪かったかなーとは思う。
「俺の言ってることが正義」「それを理解できないのはお前が悪い」
みたいな教え方は、初心者にとっては助けにならないんだよね。教師としては(ry
ポインタがあまり理解できてない、という時点で、初心者スレ(C/C++室)に
誘導してあげた方が、初心者と同じ目線でのレスがもらえたかもだ。
>>17 なるほどね……。
いやGNU LibCは過去互換性やらいろいろで
ややこしそうな印象がある一方で
Musl LibCはC99対応を謳ってる新規プロジェクトだから
取り組みやすいかなと思ったんだけど
やっぱり知名度が低いライブラリは避けるべきよね
>>167 ゆとり死ね。だからお前らは駄目なんだ。
まあ俺はゆとりとついでにさとりも殺処分するしかないと再認識したがな。
ここはどんなクズでも手取り足取り教えてもらえる学校のような場所ではない。
読者参加型ですらなく、全員参加型の場所なのだから、改善はお前自身で行わなければならない。
(これは社会も同じ。理解出来ないのはお前が学生またはその程度だからだ)
不味いパン屋に文句を言ったところでパンが美味くなることはない。
美味いパン屋を自分で建てるか、誘致するか、自分で探して買いに行くなりしなければならない。
その結果、不味いパン屋は倒産し、美味いパン屋だけが繁盛して残る。
結果、社会全体で見ればよりおいしいパンを手に入れられるようになる。改善するわけだ。
ここも同じだ。
他人のレスに文句を言っても何も変わらない。
良いレスを自分でするなり、適切なスレが他にあるのなら誘導するなり、
改善する活動は自分自身で行わなければならない。
お前らはこれを全くせず、文句しか言えない。だからゆとりが集まっても何も改善しない。
これは、長期的に日本を悪くして行っている。
教え方を知っているつもりなら、何故お前が教えてやらない?
他の良いスレを知っているのなら、何故そこに誘導してやらない?
この点において、何度も言っているが、半角君の方がまだましだよ。
彼は少なくとも自分で改善しようと試みてる。
不味いパン屋を出店することが法的に規制されていないのと同様、
ここでは下手くそなレスを連発することも規制対象にならない。
なら、自分がより良いレスが出来ると思うのなら、何故やらない?
お前らは根本的に考え方がおかしい。
だから文句を言われるのだが、それが何故かも理解出来てないだろ。
話は簡単だ。相手より良いレスで相手のレスを「上書き」すれば良いだけだ。
おいしいパン屋が結果的に不味いパン屋を蹂躙するのと同様、
お前のレスが下手くそなレスを蹂躙すればいいんだよ。
もっとも、どのレスに価値があるかは読者が判断することであって、
お前らみたいにわーわー騒いで勝ち、という幼稚園児レベルの話でもないがな。
質問者、或いは同様の事で悩んでいる奴らは、全部のレスを読むだろう。
その結果、「このレスのおかげで理解出来た」というのは自然に発生していく。
それが勝ち負けに対する一票であり、その投票で勝ち負けは決まる。
この点において、俺がお前らに「負ける」事は絶対にあり得ない。
お前らは何ら「役に立つ『可能性』のある」レスをしていないからだ。
他人に文句しか言っていない。
自分の候補を持ってないから、お前らが勝つことは原理的にない。
ここで、『可能性』に言及したのは、これこそが改善の原動力だからだ。
お前らも、自分のレスの方がいい『可能性』があると信じるなら、どんどんレスをすれば良いんだよ。
この点において、半角君自身は彼のレスこそが至高であり、俺のレスなんてゴミだと信じているわけだから、
当然俺のレスを貶す。
まあ必要以上に粘着されているが、彼が俺を貶すのは、この点において理に適っている。
それが行儀がいいかどうかは、読者の判断に委ねればいい話だ。
もし彼のレスで「分かった!」となる奴がいたら、彼の勝ちでいいわけだし。
そしてこの点において、お前らには本来は文句を言う権利もない。
お前らは俺のレスを上書きする為の「お前ら自身のレス」がないのだから。
俺は俺のレスがある。半角君は半角君のレスがある。これでレースは成立する。
お前らにはレースに出走するレスすら存在しない。当然レースには参加出来ない。
お前らはこのことも理解出来ない馬鹿なんだよ。
だからゆとりは死ねといわれる。これも妥当な話だ。
俺は
>>18に必要なのはIDEであって、話はそれからでいいと思うぞ。
そして今の判断では、18はプログラミング向きではないから、止めた方がいいと思うし、
それ以前に何の為にプログラミングしてるか謎なのだが。
学校の勉強として出てくるプログラミングを先に予習するつもりなら、止めとけ。
数学と物理を勉強しておいた方が、結果的にプログラミングの学習は早い。
だから学校の勉強を頑張っておいた方がいい。
ネオvoidが今日も暴れる
駅前で不特定多数を叱り飛ばしている危ないオヤジさながら
voidおじさん誕生の瞬間に居合わせることが出来てわたしはとても幸せです
>>173 ここは質問に答えるスレだ
おまえは半角君に感化されてようやく質問に答えた
最初のおまえの行為を正当化する道理はない
>>18は悪くないのに、とばっちりを受けたようなもんだね。
初心者なら別に珍しくもないレベルの疑問や理解不足なのに、たまたま答えた奴が自分のミスを指摘されたことに逆上して他のところに八つ当たりをしているだけのように見える。
>>176 ゆとりはマジで死ね
だからそれはお前自身がまず役に立つレスをしてから言え。
そしてそれが本当に役に立つのなら、誰がどういうレスをしようが話はそこで終わる。
質問者はそのレスだけでおなか一杯になるし、それで十分だからだ。
他人のレスにどうこう言う話ではない。
そもそもここで他人に期待するのが間違っている。
各自は勝手にレスするだけ。
回答する自由もあるし、無視する自由もある。勝手なことを述べる自由もある。
お前は根本的に勘違いしている。自分でやらないといけないんだよ。
そもそもお前は何故回答しなかったんだ?
それを棚に上げて、お前は何を言ってるんだ?
お前が正しく回答すれば、それで終わった話ではないのか?
ゆとりがいくらいても何も改善しない。だからゆとりは殺されるべきなんだよ。
正しく理解して死ね。
お前らより、半角君のほうが数段ましだ。
彼が100人いたら、100通りの回答は出てくるだろうし、どれかは当たるだろう。
お前らが100人いても、文句ばかり言って、誰も何も回答しない。何も改善されない。
そもそも、
>>72が回答になっていると思う馬鹿共は、
>>36のソース読んでないだろ。
それでどうしてそんなに強気で批判出来るのか。頭おかしいとしか思えないぞ。
72の「直接的回答」では18の手助けにはならない。
少なくとも、それで解決する奴なら、そんな引っかかり方はしない。
俺の回答は、「色々間違ってるから納得いくまでIDEでステップ実行しろ」だ。
これ以上の回答が出来るつもりなら、やれば良いだけだ。何故それをしない?
そして、半角君はそれをやってるだけだ。お前らより数段ましだ。
>>178 そうだね。「レスってなんですか?」みたいな。
ゆとりと言えば現在52歳以下の大半はゆとりなわけで、ほとんどゆとりがゆとりを叩いているだけだ。目糞鼻糞を笑うみたいな感じ。
50代も20代の頃には「新人類」とか呼ばれていた。おそらくそう呼んでいた側も若い頃は色々言われていたんだろう。
いつの時代も歳よりは若い者に難癖を付けて嫌がるものだ。自分のお株がどんどん奪われて行ってしまうからな。
若いやつを嫌がるようになったらもうほとんど終わったと思った方が良い。
https://ja.wikipedia.org/wiki/%E3%82%86%E3%81%A8%E3%82%8A%E4%B8%96%E4%BB%A3 ゆとり世代
ゆとり世代(ゆとりせだい)とは、ゆとり教育(ゆとりきょういく)を受けた世代のこと。
定義・範囲
ゆとり世代については明確な定義、範囲はなく諸説ある。
小中学校において2002年度施行(高等学校は2003年度)の学習指導要領による教育を受けた世代(1987年4月2日 - 2004年4月1日生まれ)。
小中学校において1980年度以降(高等学校は1982年度以降)の学習指導要領による教育を受けた世代。1966年度生まれ以降。
ああ、そうだ。14歳以下はゆとりではないな。失礼。
>>181 > 現在52歳以下の大半はゆとり
まずお前は算数からやり直した方がいい。
> いつの時代も歳よりは若い者に難癖を付けて嫌がるものだ。自分のお株がどんどん奪われて行ってしまうからな。
これは違う。
というか、ゆとりはこの方法でもっとゆとり批判の陳腐化を仕掛けるのが常だが、これは間違いだ。
いつの時代も、最近の「天気」「若者」「言葉」はおかしい、と言われてきた。これは事実だ。
ただ、ゆとりの場合、逆に
> 自分のお株がどんどん奪われて行ってしまうからな。
これがないから批判されてる。
教育システムは単調増加で整備されていく。
先生も教材もこなれてくるからだ。
先生は先生なりに努力はしており、上手い教え方が見つかれば共有されていく。
(それの最たる物が予備校だったわけだが)
勿論クズ教師もいるが、それ以外が大半だから、全体的には改善していく。
プログラミングにおいては、無料IDEが何種類も普及し、言語も選べるようになった。
PC(実行環境)が家にあるのは当たり前になった。
家で実行する術もなく、無料IDEもなく、C言語しかなかった時代はほんの15年前だ。
それからすると雲泥の違いだ。
だから、『同じ努力をしたとき』同じ年齢で比較すれば、常に実力は 新世代 > 旧世代 の図式が成り立つ。
よって、いつの時代も、実力は 旧世代の今 >>> 新世代の今 > 旧世代(新世代と同年齢時) だった。
これが、
> 自分のお株がどんどん奪われて行ってしまうからな。
に繋がる。繰り返すが、これは『同じ努力をしたとき』の話でしかない。
問題は、ゆとりは努力をしてきてないことだ。
だから、これが成立しない。ゆとりが叩かれているのは、ひとえに、旧世代から見て、
「昔の俺より明らかに酷くね?」と思えるからだ。
逆に言えば、それ以前の若者批判は、
「最近の若者は酷い」「じゃあお前の若い頃はどうだったんだ?」「…(いや確かに酷かったわ)」で済んでた。
それがゆとりは成立しないから叩かれてる。つまり、
「ゆとりは酷い」「じゃあお前はどうだったんだ?」「さすがにこんなんじゃなかったよ!」なわけだ。
(勿論、飲みニュケーションなんて意味無いし糞ウゼエとは俺も思ってたから、
ゆとり(というより新世代)の価値観に共感出来る面はあるにしても)
プログラミングでも同じだ。
環境は圧倒的に新世代の方が上だから、旧世代の『当時の』実力に追いつくのは圧倒的に楽だ。
それは旧世代の成果だが、新世代なのだから有り難くそれを享受すればいい。
東工大含め、各学校がシラバスを上げているのもそういう流れだ。
そしてその後の新々世代は、さらにそれを享受し、新世代をも凌駕する速度で学習すればいい。
そうやって世の中は回っている。
だから新世代は旧世代を凌駕してくれないと困るんだよ。
ゆとりはこれがないから叩かれてる。
お前らが思っているのと逆なんだ。
2chについては、システムを長いこと変更していない。
結果、このシステムではこうしかならない、という点に収束している。
死ね、ウンコ、おっぱい、良くも悪くもこのスレ以外も同じだろ。
現状、文句を言っている奴は、全く改善に繋がるレスが出来ていない。
他人に文句だけ言って、自分では何もしない、典型的クレクレ君だ。
そしてお前らはクレクレ君をちゃんと飼え、回答だけしろという。
そういうスレは2chにはないだろ。
理由は簡単、そんなスレは面白くもなく、当然のように潰れるからだ。
ここら辺を理解も出来ないからゆとりは馬鹿にされる。
お前らが望む物は、今のお前らのやり方「文句を言うだけ」では絶対に手に入らない。
お前らが直接参加して、お前らが思う『正しい回答』をするしかないんだよ。
だから、「C言語ゆとり専用スレ」が繁盛すると思うのなら、やってみればいい。
俺はそっちには行かない。これは約束する。
そしてそのスレが繁盛し、このスレが過疎って落ちるのなら、君らの勝ちでいい。
そうやって、おいしいパン屋が不味いパン屋を駆逐するのと同様、
良いスレが悪いスレを駆逐することにより、全体的に板が次第に改善されていくものなんだよ。
これは2chにこだわる必要もなく、
stackoverflow/teratail/知恵袋/はてな等、好きなところを自分自身で盛り上げればいい。
そうやって、2ch自身が過疎って死ぬのなら、2chは役割を終えた、となる。
この、改善に向けての一歩は自分自身のレスで行うしかないし、それ自体が一票になる。
そしてその投票結果が繁盛/過疎、ということになる。
だから何度も言っているが、他人のレスにけちを付けるのではなく、
「俺ならこうだ!」みたいなレスをするべきだし、
それをしてないうちは、他人のレスにけちを付ける筋もないんだよ。
そしてこれまた何度も言っているが、半角君はそれをやってるし、
彼にとっては彼の回答こそが大正義なのだから、俺のレスにけちを付けるのも筋は通っている。
だから、お前らも、まずお前らの大正義回答を見せてから、俺のレスにけちを付けるべきなんだよ。
ゆとり批判にフォーカスして論理をすり替えるのもお前らの常套手段だが、
お前らがゆとりであることが問題なのではなく、こういった筋を理解していないから批判されてて、
理解出来ないのはゆとりだから、とされてるわけだ。
結果、ゆとりは死ね、で大体あってるからゆとりが叩かれてる。
ゆとりの行動が批判されているのであって、それはお前らが変われば済む話なんだよ。
ここでの話なら、何度も言っているが、お前ら自身が大正義な回答をして見せろ。
そしてそれが質問者にとって本当に役立つのなら、そこで話は終わる。
俺がどんな糞レスをしようと、質問者は俺のレスなんて無視して終わりだ。
お前らはそれをせずに、文句だけしか言わないから批判されてる。
それをちゃんと理解して、社会参加しろ。(ここでなら回答しろ、ということ)
必死だな。長すぎて読む気が起きん。パッと見C言語とも関係なくスレチなようだし。
>>189 おしまい
って言ってるけどポインタ操作残ってると思うんですが
>>190 本質は捉えてると思うけどいろいろ省略はしてるよ。
>>189 おーご苦労様。(俺に言われたくはないだろうけどさ)
まあそれで君なりのベストアンサーがその図だというのはそれでよし。
晴れて君はレースに出走出来、俺を貶すにしても筋が通るというわけだ。
君自身も回答を控えていた点から、直球回答は意味無いと考えていたわけだし、
マジで
>>72が役立つと思う馬鹿はちょっと色々考えた方がいいぞ。
君が認めるかどうかはさておき、
良くも悪くも今君が作った図はインターネット上を彷徨うことになる。
そしてこれは次世代への蓄積となり、次世代はもっと効率よく学習出来るようになる。
君は未来に対して貢献したのだから、褒められるべきだ。
こういう、各自の努力の蓄積によって今の社会は成り立ってる。
学生の本分は学業だと言うのなら、社会人の本分は社会だ。
社会人はこれを認識し、社会に対して責任を持たなければならない。
>>189 そして詳細確認したが、「今回向け」に書いている点が惜しいな。
単方向リストで before を使うのは筋が悪い。
だからその図は今回には役立つが、ある意味『間違った』蓄積であり、
確実に『正しい』ものによって淘汰され、君の努力はいつか無駄になる。
そしてこういうミスリードを誘った「C言語本格入門」の著者は腹を切って詫びるべき、となるわけだ。
可能であれば君自身で修正し、ブログでも立ち上げてそこに貼り付けるか、(quitaでもいいか?)
ブログやってるが図がない奴に勝手に送りつける等、残す努力をするべきだな。
まあそちらの自由だが。
>>191 やりっぱなし感があるというか
手順の提示としては定常状態まで戻っておしまいの方が好ましいのでは
まして想定対象者が
>>18みないな感じなら
あーうざい
>>189は今後もプログラミングを続けるべき18のためのもの。
長文くんの回答はハードモードで入門者の役に立たない。
この段階でダブルポインタとか頭おかしい。
>>196 うーん、ごめん無理。もう疲れた。
>>197 > この段階でダブルポインタとか頭おかしい。
そもそも二重ポインタが難しいってのがもう無理なんだよ。
ただのポインタと二重ポインタの難易度で大差はない。
それだとジャグ配列も理解出来ないだろ。
まあそれでも君は君なりにイージーモードの回答をしたつもりな点はいい。
それで俺の回答がハードモードすぎると批判するのも正しい。
他の馬鹿共もこいつを見習って何か回答してから文句を言え。
そうしないと何も改善しないんだよ。
そしてそれがお前らゆとりが最悪な点でもある。
なお、俺の回答は既に最初から何度も繰り返しているが、「IDEを使え」だ。
18は何が分かってないかすら理解出来ていない。
それを君も理解してるから、君も直球回答しなかったわけだろ。
だから俺の回答は、「IDE使って納得いくまでステップ実行しろ」になる。
ただし36のソースはゴミだから、わざわざステップ実行するなら41か44にしろ。
そして47が何故高速になるのか考えろ、というわけだ。
あと、君は『ゆとりスレ』を率いれる可能性がある。
他のゆとり共には回答出来るだけの知能がないから無理だったが、君にはあるようだから。
俺が気に入らないならスレ立てて頑張れ。他のゆとりも応援してくれるだろう。
俺はそっちには行かないことも約束する。
それで君たちだけで上手く回せるのなら、それが一番いいし。
そしてその程度で疲れるものだと理解出来たのなら、
俺やお前の上司や先輩がどれだけお前らゆとりの為にエネルギーを費やしてきたかを理解し、
感謝しつつ、お前も後輩の為にエネルギーを費やせ。
(上司や先輩に返す必要はない)
>>200 自分の無知を指摘され、いったん素直に指摘を認めことができたけど後から後から突っ込まれ、怒りの矛先を他人に向けて自分を納得させようとしているのだと思われる。
カッコ悪い姿をさらし続けていることに自覚が無いらしい。
>>199 >ただのポインタと二重ポインタの難易度で大差はない。
それは、あなたの理解の仕方が、二重ポインタの難易度の差を感じない、というだけであって、
他の人にとっては、ただのポインタと二重ポインタとで、難易度に差が出る可能性はあります、というか、それが普通だと思います
>>201 違うぞ。お前はそういうことにしたいようだが。
>>200 まじめに聞きたいのなら答えてやるが、その前にお前が答えるに値することを示せ。
具体的には、
>>189を見習って、お前なりのベストアンサーを出して見せろ。
そうでなければお前は文句しか言わない典型的クズゆとりでしかない。
それをちゃんと自覚しろ。
>>202 何度も言っているが、俺のレスが難しすぎるというのなら、
お前がより簡単なレスをすれば良いだけだ。お前は何故それをしない?
>>189を見習え。
だからお前らゆとりは死ねって言われるんだよ。
>>205 それは俺に言ってるのか?
ならばお前も根本的に勘違いしている。
流れがおかしいと思うのなら、お前が流れを正すレスをすれば済む。
他人のレスを期待するのは間違いだ。
お前には違う受け方も見えていたのなら、お前が横レスで受ければいい。
俺が横レスについて文句を言うことはない。
そして指摘の通り、俺はそっちには受けなかった、これはその通り。
しかし、どっちに受けるかは勿論本人の自由だ。
そして、放置された話題を続けたいと思うのなら、お前が横受けすれば済む。
勝手にやれよ。俺は参加しないが。
>>200 やはり何かのスイッチが入っちゃったんだろうなあ・・・
>なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
プークスクス
低学歴知恵遅れは質問には答えられないくせに
こういう質問と一切関係ない話題にだけは
とても強い関心があるのがよくわかるわ
しかも質問したヤツはこのスレを見てるとは到底考えられない
不毛な低学歴知恵遅れたちの争いだけがひたすら続く
> なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
> こういう質問と一切関係ない話題にだけは
もうやめて、お腹痛い
>>209 と言うか、レス先が分からなかった通りすがりだが、LLみたいなどんな型にもなれるって意味でvoid使えるは使える。
Java のキャリー地獄みたいになるから推奨はされてないが。
>>37 >なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
Javaスレで相手にされなくなってたアイツじゃね
>>213 それは void* で、引用元は
>>37。
状況知りたければ18から全部読め。(ただし中身は無い)
> Java のキャリー地獄
これは何?JavaならObjectで多態では?
なお回答先はJavaスレ(以下)でも構わない。俺がそっちに行く。
http://2chb.net/r/tech/1518252580/ 流石に全部は読めんw
ただ、元を読む限りただの引数なし関数やね。
>>217 文法の不具合を解消する為の方策だ。
詳しくは
>>64内URL参照。
くう。。。
今からだとあぼーん多過ぎていまいち。。。
新旧の文法上だと言うのは何となくわかった。
まさかautoでは無かろうが。
auto というと、C++では型推論してくれるんだっけ?
C言語だとただの自動変数を表すキーワードだからほとんど誰も使ってないと思う。
型指定子がなかったBの名残りってだけで
Cでは死産と言っていい状況だね
同じものがある順列を列挙するCのコードってどこかにないかな?
PEPPERとかMISSISSIPPIとかを並べる順列を列挙したい。
>>224 普通はcarとcdrで再帰降下して、重複を取り除く為にアホみたいにN^2/2回比較して終わり。
この単純実装で十分だと思うけどね。メモリ食うけど。
そのサイトの実装は、速そうには見えないけど、メモリは食わないね。
>>225 再帰使ったコードどこかに落ちてない?
自分で書く能力ないので既成品で速度比較してみたい。
自分で書いた方はえーわ
そして書けないってまずいわ
さらに自分で考えないってもっとまずいわ
>>226 Cでその態度はグーで殴られるだろう。
なお225、再帰時に毎回sortして重複枝を刈れば、列挙後の比較は不要となりメモリは食わない。
ほぼ224と同じになるが、これが最速でもっとも簡素な気がする。
224は単純に全降下ではなくswapして降下先を選んでいるが、これの利点はよく分からん。
>>225 carとcdrってCでも使う言葉なの?
最近scheme初めて知ったんだけど
>>229 >carとcdrってCでも使う言葉なの?
あんまり聞かない…
OSの体系的な質問で申し訳ないんですけど
VisualStudioで作ったC言語の計算アプリがあるんですけど
これはMacでも動くんでしょうか?
それともMacにいったんVisualStudioをインストールしないと駄目なんでしょうか?
聞くに、C言語は低級言語なので動かないOSはない、C言語自体が完全ネイティブ環境
だとも聞いたのですがどうでしょう?
コマンドラインで起動するコンソールアプリで
C言語の標準的関数しか使っていないなら
ほぼそのまま動かせると思いますが、
Windows固有のAPI使っている場合は
手直ししないと無理かと思います
>>231 main() を定義しているファイルをここ
https://www.ideone.com に晒してくだされば、判断いたしましょう
VS for Macとかコードの互換性あるんでねえの?
バイナリは別としてさ。
>>232 うん???www
WindowsAPIってのはC言語で実装されてるから問題ないのでは?
WindowsAPI毎Macに移植するのであれば、動くかも知れませんね
>>235 >WindowsAPIってのはC言語で実装されてる
win32api(≒WindowsAPI) は C から呼び出せるようになっているのではありますが、
win32api の実体が存在するかどうかは、また別の話になります
mac にて windows 向けのコードを実行させるための手段があるかどうかは、私にはよくわかりません
(wine とかが移植されているのですか?)
>>237 WindowsAPIを書いてる言語はバイナリってことですか?
ソースコード全部をgithubに乗せれば話は早いです
要するに、現物を見るのが手っ取り早いです
CPU
OS
ソースコード
実行ファイル
ライブラリ
API
この辺の理解がごっちゃになってるな
もしくは釣り
試しに、VCではなく、GCCコンパイラ使って、
ソース修正せずに実行プログラムが作成出来るかな?
>>240 釣りではないです
大学では
バイナリ→アセンブリ→C言語→WinAPIやJava→高級言語(DirectXなどのライブラリ)
→統合環境(VisualStudio)
の順番で言語規模が高性能化するって習いました
高級言語→C言語にするには実行環境が必要ですが
そもそもC言語であるならば、OSが直接読み込める形であるのだから
どんなOSでも動くという理解です。
間違っていますか?
大学でしないといけないのはプログラミングではなく言語体系についての
理解をレポートにしなきゃならないので
>大学では
>バイナリ→アセンブリ→C言語→WinAPIやJava→高級言語(DirectXなどのライブラリ)
→統合環境(VisualStudio)
>の順番で言語規模が高性能化するって習いました
どんな教育だよ...
>>242 その言語や環境の並び、ざっくりしすぎというか突っ込みどころ満載でどこから訂正していいか困るレベルだよ。
テキストや教師がもんだいなのか、君がの理解不足でおかしなまとめ方をしてるのか…
>>246 どこらへんが間違ってますか?
間違いは財産です。教えてください。
>C言語であるならば、OSが直接読み込める形であるのだから
>どんなOSでも動く
しゅごい
>高級言語→C言語にするには実行環境が必要ですが
「そもそもC言語であるならば、OSが直接読み込める形であるのだから
>どんなOSでも動くという理解です。
C言語は各マシンそれぞれのCPUやOSに対応した適切なコンパイラとAPIでコンパイルしないと動きません。
>>242 まったく自分でプログラミングしてないなら実感沸かなくて当然なのだろうけど、その課題意味あるのかな。
それはともかく。
Cで書いたプログラムならどのOSでも 動く訳ではない。
Cで書かれたコードはOSぎ直接理解できるわけではない。そこでCのコードをOS上で実行できるコード(君の分類ではバイナリ)に変換する作業がいる。
その際、ターゲットとするCPUに合わせたコードに変換するから、違う種類のCPUの環境では動かない。
また、OSに関する機能は全部を自分の生成するプログラムに内包する訳ではなくて、OS側ですでに用意してあるプログラムを呼び出すだけだから、他のOSに自分のプログラムを持っていったら、呼び出す先のプログラムが存在しないので実行できないことになる。
>>249 正しいのでしょうがよく分かりません
C言語のほうが低級なのに、高級のWinAPIでコンパイルするんですか?
矛盾してるような…
WinAPIはコンパイルされる側のような…
>>251 前提の理解が間違っているというか、APIが何者かまったくわかっていないよね。
winAPIはwindowsが予め用意してくれている機能で、一般のプログラマがコンパイルするものではない。
自分のプログラムをコンパイルするときに、くっ付けて使わせてもらうもの。
WindowsAPIはAPIであってプログラミング言語ではないので言語的な高級度は定義できません。
すいませんまったく理解できなくてすいません
低級言語っていうのは、できることは単純だが速度が速いという認識です。
バイナリになると一切無駄が無いので実質、最速の言語だということも知っています。
APIという高度な機能をもってC言語をコンパイルするというのがなぞすぎます。
すでに単純な命令を何故コンパイルという時間のかかる処理を施すのでしょうか?
>>242 > 大学では
お前の大学の講義資料のURLを晒せ。
今時の大学なら(学外から見えるかはさておき)普通は上げてるだろ。
おかしいのがお前の頭か講義資料か先生かは切り分け出来る。
まずいまどきアセンブラなんか手書きでなんか書かない
C言語をコンパイルするとアセンブルしてしてアセンブラをコンパイルする
すると実行モジュールができる(コレがチミがバイナリと読んでるものになる)
WinAPIやDirectX APIはOSが提供するアプリケーションインターフェースになる
それをさっき書いたC言語から利用することができる
で、C言語に限定されないが、そういった開発を
知恵遅れでもできる環境を提供するのがIDEとよばれるものだ
当然、viでコードやmakefileをシコシコ書いてコンパイルするのもありだが
今時いちいちそんなめんどいコトやってるヤツは希少種といっていい
とりあえず今ココではJavaはおいとく
なんか根本的な事を教えてくれて泣けてきます
wiki見ても端折ってばかりで理解できなかったんで嬉しいです
でもそれでも分かりません…
>>254 すみません、APIをコンパイルではなくAPIをリンクの間違いでした。
知恵遅れでもできる環境
僕が使ってるのはCygwinとVisualStudioですね
学校の課題はCygwin推奨ですが、何故かVisualStudioも入れられましたw
>>257 まず、windowsAPIはC言語等の関数として提供されてるのはわかる?
そんでその関数のソースコードは公開されていない。だから、自分が書いたソースコードだけをmacに持っていってもソースコードが足りないので動かない。
仮にソースコードを手に入れたとしても、内部でwindowsのカーネル(コアとなるソフト)だけが提供している機能を利用使って実装されているから、やはりmacに持ち込むことはできない。
>>259 余談だけど、半角カナにこだわりのある通称半角クンに知恵遅れとか言われても気にする必要ないぞ。彼にとってただの二人称代名詞だから。
>>256 ワイは希少種やったんか
世間じゃカーネルモジュールはどんな開発環境でやってるんや?
オレが書いたC言語のプログラムを機械語に変換すればようやくコンピュータで実行できるようになります。
APIは既に機械語に変換されているか、オレの書いたC言語と一緒に機械に変換されてからオレの機械語と結合して使われます。
>>260 まったく分かりません
WinAPIがC言語が混ざったらもう何がCでAPIなのか
もうわけわかりません
で、javaはコンパイルするとバイトコードに変換される
で、そのできあがったバイトコードはJavaVM(コレがチミがバイナリと読んでるものになる)で動かすことができる
昔のpascalのpコードのパチモンと考えればいい
そっから、さらに進んでバイトコードをjitコンパイラでコンパイルするしくみもあったりする
それ使うと実行モジュール(コレがチミがバイナリと読んでるものになる)ができてしまったりもする
ただ、その実行モジュールはターゲットマシンでないと動かない
で、当然、javaもeclipseみたいなIDE使って開発できる
わかった?
>>254 低級・高級(Low-Level/High-Level)は
言語体系がハードウェア実装=CPUに近いか
人間語に近いかどうかの話で
性能とは一切関係がない
(という話は確実に教科書に書いてあるはず)
CPUはバイナリしか解釈しないから
どんな言語を使ってもコンパイル作業が要る
>>264 とりあえず、Cで何度かプログラム書いてみたらいいんじゃないかな。
知識だけ身につけると頭でっかちになっちゃうからね。
>>266 C言語は言語の中では最速だというのは教科書に書いてましたよ
>>264 Cで書いたソースの多分先頭付近に並んでいると思う
#include で始まる行の部分だけでも公開してみて
WindowsAPIの為に入っている行を取り除けば
(このままではコンパイルエラーになるかも知れないが)
Wacに持っていく入り口にはたどり着ける
たとえばmacで
WinAPIと同じインターフェースもつ同じ機能のAPI(書くことができるかどうかは別ににして)を
Cで書くとmacでwindowが動く
時間があるならついでに
なんで、POSIXというもんがあるか調べてみるといい
>>269 #include<stdio.h>
int main(void)
{
〜中身〜
}
です。
int main
stdio.h
の二つはおまじないと聞きました
>>271 ホントにそれだけなら、そのまま
Macに持って行けるんじゃないか?
あとはMac側でコンパイラが使えるかどうか、だな
VCでないと困る事ある?
MacでやるならXcodeと言うのを使った方が良いように思うが
最初にWindowsAPIなんて言い出したやつは出てこい!!
ドッカン ゴガギーン
_ ドッカン ☆
===( ) /
`∧∧_||___ ∧∧
( )||| |(Д`)
f ⌒~ || || \
| / ̄ | |/| / /
| | | ヘ/\|_/ /
| | ロ|ロ\/\(_ノ)
( (_ \ | | Y /
| ||\ ヽ| | ||
| || / / | | ||
| ||/ /_|___| ||
(_(_) (__)
そういうコードだったら
macでコンパイルしなおせば
普通に動くハズ
>>268 C言語が速いんじゃないんだよ。
C言語で書かれたソースをコンパイルして生成されたバイナリコードが速いんだよ。それはCPUが直接実行できる形式だから。
別に他の言語でも、コンパイルしてバイナリコードが生成できるものは、本質的にはCと同じ。
遅いのは、バイナリコードを生成せずに、その言語固有のコードを生成して、それを別のプログラムが解釈しながら実行するようなタイプの言語だよ。例えばJAVAのような。(実行時コンパイルとかはこの際おいておく)
>>271 おまじないは一個要らへんで
$ cat test-printf.c
int main(void)
{
printf("Hello\n");
return 0;
}
$ gcc test-printf.c 2> /dev/null
$ ./a.out
Hello
>>268 それは教科書がおかしいか誤読してると思われる
「現代の高級言語の中では最速のバイナリをビルドできることが多い」
とかならまあありだが
OSによって動くコード(アセンブリ)が違う
CでもC++とかで書いたコードをコンパイルする時にその対象のOSで動くように機械語に変換される
なので同じCやC++のコードでもコンパイルできれば動くプログラムが作成できる
しかし、標準ライブラリ以外はその対象OS用に用意されていない場合もあるのでそういうライブラリを使用した場合コンパイルが出来ない
てかレポート出すような講義で「おまじない」で済ますもんなのか最近は
最初の質問もexeをそのままMacに持っていって動きますか?だったのかも
cygwin入ってると書いてあった
きっとgccもはいってるハズ
手動でコンパイルすればすぐに実行モジュールができるハズ
>>231 標準入力やファイルからテキストのデータを読んで計算してから標準出力またはファイルに出力するような
ほとんど計算しかしないようなやつなら何一つ変えずにコンパイルできる可能性がある。
しかしGUIで入力を受け付けてGUIで結果表示みたいな作りの場合はその部分だけMacに合わせて変更する
必要があると思う。(もし互換性のあるライブラリがあるのであればそれをリンクすればなんとかなるが)。
バイナリは、各CPU に固有のもの。
intel・AT&T では逆に書く
; for intel syntax
mov eax, 1
# for AT&T syntax
mov $1, %eax
これらを抽象化する層、仮想アセンブラのLLVM ができた
C → LLVM → 機械語
テキストファイルを#includeしたりするのっておもしろそうと思った。
#include "file.txt"
使い道がほとんど思いつかんけど。
正規化されたcsvファイルなら有用かもしれない。
>>285 XPM や XBM フォーマットの画像ファイルは中身がテキストファイルでC言語になっているので、
プログラム中で使いたい時に #include で読むなんてことを昔やった事がある。
今でも画像を編集するソフトではそういうフォーマットに対応しているのがあるかも知れない。
あったら画像をファイルに保存後に中身をテキストエディタで見てみると良い。
XBM
http://sei.qee.jp/docs/graphics/xbm/index.html https://en.wikipedia.org/wiki/X_BitMap XPM
https://ja.wikipedia.org/wiki/XPM XPMか。FVWMあたりのソースコード見れば実際に利用してるところがあるかもね。
なぜFVWMかと言うと ある程度小さくて読みやすいかなと思ったから。
ていうかさ なんで
#include "file.txt"
なんていうことをやろうかと思ったかというとさ,
よくアプリケーションのオプションで--helpみたいなオプションがあってそれを指定すると
標準出力にヘルプ情報を吐き出すじゃない。
で,普通それを実現するには,print_help()関数みたいなのを作って
その中で
puts("Usage: xxx [-dx] <file>...");
↑こういうのをずらずら書きならべると思うんだよ。
http://git.savannah.gnu.org/cgit/hello.git/tree/src/hello.c#n127←こんな風に。
で,そのヘルプファイルを外部ファイルにできないかな〜と思ってさ。
print_help() {
puts("
#include "help.txt"
");
return 0
}
こういう感じで。もちろんこれはコンパイルエラーになるけど。
,j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;;
{;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; #include "file.txt"
ヾ;;;ハ ノ .::!lリ;;r゙
`Z;i 〈.,_..,. ノ;;;;;;;;> そんなふうに考えていた時期が
,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f. 俺にもありました
~''戈ヽ `二´ r'´:::. `!
argv[0]を使わずにusage表示するやつ嫌い
>>290 実行ファイル内に組み込みたいんじゃないの
includeするファイルの拡張子が.hか.txtなんて関係ないよな。
中身がCのコードとして解釈できるかどうかだけで。
>>292 おれは好きだよ
argv[0]の長さとかわからないし、不安になるもんね
独学で始めたての頃はリンカを知らなかったから、.c も全部 include してまとめてコンパイルしてたw
>>292 かといって argv[0] って必ずプログラムファイルへのフルパスの文字列になってる保証はないよな?
UNIX系OSだとexecに渡す引数は実行するプログラムへのパスとargvの配列は別に指定できるしシェルは自身がログインシェルとして起動されたかどうかをargv[0]利用して判別してるし。
組み込みでreal型を使うメリットってなんでしょうか?
floatやdouble型との違いを教えて頂けないでしょうか?
「パス」は正しくないでしょ
ユーザがシェルに入力した文字列が入るわけで
>>297 フルパスである必要はない
そんなのはwhichで出るから重複もいいとこ
>>301 argv[0] が "-" だったらどうするよ。
まあやっぱり#include "file.txt"なんて常人は考えねーよなw
いろいろすまんかった。
>>305 使い道はあるよ
多量のマクロ定義リストを読ませるとか
ビットマップを本体のコードに埋め込むのに
char data[] = {
#include "bitdata.inl"
};
とかやった。 bitdata.inl は別のソフトで生成
>>307 disるつもりはないし状況も分からんのだけど、バイナリデータをコードに埋め込んでコンパイルかけるのは筋が悪いような?
>>305 file.txt を C の文字列にした file.c なり file.h なりを作る簡単なスクリプトなり書いて、make ファイルでそれが動いて取り込まれるようにすりゃいいんじゃね。
usage:
-h help
-u unko
みたいなテキストを
#define USAGE "¥
usage:¥n¥
-h help¥n¥
-u unko ¥n¥
"
みたいな define か何かにすればいい。
大量のテーブルデータをマクロ型式で記述して
includeの直前でマクロを望む内容で定義すると便利
>>308 (Windowsの話)
ライブラリを作ってるときに、そこで使いたかったんだが(ImageList)
リソースというわけにもいかず、ファイルを読み込むのもライブラリ化の意図からずれるし で
埋め込んだのよ
簡単に肥大化するから筋が悪いのは半分承知
ああ 件のファイルは 0x○○, 0x○○, … なテキストのファイルです
>>312 ああ、なるほど。
まぁ俺も組み込みでビルド番号を自動生成してソースにincludeで組み込むこともあるので人のことは言えないけど。
WindowsAPIを機械語にするソフトを機械語にするソフトを機械語にするソフトを…
って考えたらまた頭が混乱してしまいました…
APIとはインターフェースである。
見えるのは表面だけで中身なんてどうなってるかわからない。
CのコンパイラはWinAPIでしかかけないってことですか?
Advanced windows買って読め じゃ乱暴か…
>>315 まずはWindowsAPIとは何なのかを調べろ。話はそれからだ。
>>310 にゃるほど。
まあ それでもいいんだけど,結局変換の手間があるんだよね。
しかし一度でも.hか.cファイルを作ったらあとはそれを#includeすれば
複数のファイルに使えるってのは有用かもしれん。
Usageでは↑複数には適用できないけど,ライセンスとか。
Cのコンパイラがpythonで書かれていようと俺は一向に構わんがインターフェースでどうやって書くのかは知らない
>>315 最初のコンパイラは人間が手入力でバイナリを書いた
>>321 CをコンパイルするのはWindowsAPIって昨日聞きましたが?
C自体では動かないのだからWindowsAPIでコンパイルするのでは?
>>323 誰もそんな事言って無いだろう
探したけどないぞ、そんなの
いい加減、釣りだと気づけよw
てかみんな気付いた上で相手してるのか。
>>323 Winapiでコンパイルじゃなくてwinapiとリンクと間違いだったって言ったやん
>>322 流石に最初のコンパイラはアセンブリ言語だろ
最初のアセンブラはバイナリ入力しただろうけど
コンパイラはWindowsAPIの実装を知ってる人じゃないと作れないってことですか?
よくコンパイラ入門なんて本あるけど作れるんでしょうか?
WinAPIはインターフェースだけを提供していて実装は分からない
つまりコンパイラを考える人はMicrosoftの開発者だけってことですか?
それだとコンパイラ入門ってどういうことなんでしょうか?
1950年代にもうそれなりのアセンブリあるんだからすごいよね。
みんな頭いいんだな。
>>331 君はコンパイラを使いたいのか
それともコンパイラを作りたいのか
すいません
正直話すと
レポートってのは2年のとき落とした履修で
今は卒論でコンパイラ作りたいんです…
つまりダブルということになります…
>>334 とりあえずアセンブラでも作ってみたら。
コンパイラ作るよりずっと簡単だけど、いろいろ学べることは多いと思うよ。
コンパイラ作るだけならCのソースからアセンブリ言語に変換するプログラムを書くだけなのでWinAPIは関係ない話
>>327 アセンブラも広義ではコンパイラだろ
こまけえな
速度とか高級低級云々の話はインタプリタを持ち出した方が良かったのかね。
抽象的な機能を提供するという点ではAPIも近いところはあるね。
>>336 例えばprintf関数のアセンブリは
どのOSだろうが一緒なんですか?
>>337 > アセンブラも広義ではコンパイラだろ
全然違うしw
雑すぎるわ
>>340 うるせえよ
意味伝わってんのにネチネチ粘着すんなよダリい奴だな
>>339 違うよ
OS毎にprintfのバイナリが用意されてて
おまえが書いたコードをコンパイルしてからそいつとリンクして繋げるだけ
>>284 ここに書いた
バイナリ・機械語は、各CPU に固有のもの。
intel・AT&T では逆に書く
開発者は、各CPU 毎にプログラミングできないから、
仮想アセンブラのLLVM ができた
>>342 ちょっと複数のPC勝ってアセンブリ確認してみますw
例えばWindows98とWindowsMEとかでも厳密に言えば
アセンブリが違うかもしれないってことですよね
>>334 コンパイラがそもそもどんな物かも分かってないんだから、コンパイラを作ろうなんて考える前に、コンパイラを使ってごく普通の簡単なアプリケーションプログラムを作って何をやってるのか理解しなよ。
studioやmainがおまじないだとか言ってるレベルで無謀過ぎるぞ。
>>346 なんか分かりました
コンパイラっていうのは9割型共通のルールのpushやmoveでかけるアセンブラ
をOS向きにさらに改良するってことでしょうか…
自分でprintfのアセンブラを書いてコマンドプロンプトで実行してみます
さて何行になるやらですが
オマエ、分かってて
このスレの低学歴知恵遅れをおちょくってるだろ
しかもちゃんと罠もしかけてる
オマエが思ったとおりこのスレの低学歴知恵遅れはちゃんと答えれない
まずこのこのスレの低学歴知恵遅れは
実行モジュールがどういったもんか分かってないからな
レスをみても分かるとおり
低学歴知恵遅れはなにも分かってないくせに
分かってるふりするのが精一杯
低学歴知恵遅れ特有のレスをしている
オマエは低学歴知恵遅れを陰湿にいじめてる
そもそも、Windows だけでも、64/32 ビットCPU で、
CPU の命令の、サイズ・種類などが異なる
i3, i5, i7 など高額・高機能になるほど、
3D・動画のコーデック命令なども付け加えられているから、処理速度は速くなる
そういう命令がないCPU では、ソフトウェアで実行されるから、すごく遅い
きっとなこのスレの低学歴知恵遅れは
PEフォーマット、EXEフォーマットとかも知らない
Windows APIがDLLの関数であることも分かってない
この低学歴知恵遅れは
コンパイルしたソースをマシンコードにしたものだけが格納されてると思ってる
レスみればほぼ間違いない
まーた半角クンが湧いちゃったじゃないか。
変な正確でも,言うことが正しければいいんだが,
こいつの話は間違った無根拠なものばっかりだからなぁ……。
じゃあオマエが質問にオマエが答えてみ
オレは常にスキがないほどカンペキなレスしか書いてないからな
まずこのスレにいるような程度のヤツラではムリ
はっきりといえる
こういとこでもな
低学歴知恵遅れであることは隠せない
質問してるヤツの質問が
このスレにいるような低学歴知恵遅れには高度すぎた
しょうがない
> なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
たぶん俺じゃないってとぼけるだろうな
>>353 それについては
>>249にも書いてるようなOSに対応したの部分にその意味も含めたつもりです。少なくともオレはそれを意識して書いた
>>330 この話の元は
>>292なのでどうすんのかなと思ってな。
>>363 おまえ304か?
strcmp(argv[0], "-") == 0のときに
printf("%s", argv[0]); を実行した場合は
- と出力されるのが何かまずいのかと聞いているんだ
答えてくれ
"-"のときなら全然まずくないけど、1MBとか1GBくらいの0無しバイナリだと
ちょっと不機嫌になるよね
>>346 スタジオドットエイチって覚えてる人にありがちな間違いだな
>>365 usageの意味がなくなるのでは?
そんなもん気にしないってなら別にいいんだけどね。
ADI法(ノイマン境界条件)って具体的に何をすればいいのかさっぱりわからない
そもそも2次元領域(0,L)^2での計算ってCプログラム上でどう構成すればいいんだろう…1次元はなんとかなったけど
と質問したかったけど数学寄りの話かな、スレチだったらすまん
今日アセンブリを作ってコマンドプロンプトで動かしてみましたが無反応です
moveとかのアセンブリはコマンドプロンプトは読み込めないんですか?
靄
Helloしか出力されないんですけど、どうすれば治りますか?
>>373 端末が受け取ってないだけとか?
printf("%lf\n", pi/a);
にすれば出力される可能性が高い。
動作環境特有の話かもな
>>374 返事ありがとうございます。
結果は変わりませんでした。
環境はターミナルです。
print だからフォーマット指示は %f か
他に理由がおもいうかばにゃい
z=pi/aとおいてzを出力させるんじゃダメなのか
printf("%lf¥n",pi/a); ってやってみたら?
すみません。今電車の中なんで、家に帰ったら全方法を試します。
だれもMac持ってねぇのかwww
いや俺もだけどww
連投ですまんがまさかコードだけ更新してコンパイルし直してないとか
初学者あるある
どこから Macの環境に限定できるのか俺にはよくわからん
リロードせずにゆっくり書いてたらほとんど同じ書き込みが既にされていたorz
最後に
fflush(stdout);
と書けばきっと出力される
やってみ
>>366 全然意味がわからない
お前は何を言っているんだ?
>>369 なぜ意味がなくなるんだ?
sed -e 's/.*/"&\\n"/' < USAGE > USAGE.c
として
#include "USAGE.c"
>>394 だってコマンドの使い方の説明にならないじゃん。
>>397 - という語句は予約されていると言いたいのか?
somecmdというアプリケーションがあったとして
Usage: somecmd [--option] <file>...
こういう出力を
printf("Usage: %s [--option] <file>...\n", argv[0]);
まあこういう感じ(もうちょっと変数やらをはさむかも知れんが)で出力するときに
argv[0]がsomecmdじゃない場合がけっこうあるってことじゃないの?
そしてそういう場合にUsage: ...の形式が壊れるんじゃないか,と。
>>399 結構あるって、例えばどういう操作をする場合だろうか?
しかし俺が思うのは,そういう場合にはたして--helpを参照するかな。
argv[0]!="somecmd"の場合ってmain関数を他のプログラムから呼び出すとかそういう場合でしょ。
その時は,そのプログラムのUsage: ...が欲しい訳だから結局somecmdのUsage: ...なんて出力する必要ないでしょ。
>>398 え?もしや - というコマンド作った場合の話?
そういうことではなくて argv[0] は起動する側が自由になんでもセットできるからコマンド名になってる保証はないという話だよ。
まあ普通のシェルから起動する場合には大丈夫だろうけど、環境によっては何も入ってないかも知れないし保証はできない。
何でもセットできる場合って、
そういう環境では0に限らず、
argv配列を使えないって事だよね
busyboxってargv[0]で振り分けてんの?
>>402 そんな変な環境使ったことないからどうでもいいや
> 二つの仮引数を定義する場合,関数 main の仮引数は,次の制約に従わなければならない。
>- argc の値は,非負でなければならない。
>- argv[argc]は,空ポインタでなければならない。
>(中略)
>- argc の値が正の場合,argv[0] が指す文字列は,プログラム名(program name)を表す。
> ホスト環境からプログラム名を得ることができない場合,argv[0][0] は,ナル文字でなければ
> ならない。
JIS X3010:2003 5.1.2.2.1
だそうです。
argv[0] にはパスも含まれ得るし、シンボリックリンクから起動されれば実体の名前ではなくなるけど、usage にコマンド名としてコマンドライン上のコマンドパスを表示したいの?
呼ばれた名前でusageわざわざ変えてるコマンド見たことないな
せいぜい例示コマンドが呼ばれた名前に変わってるくらい
ゴガギーン
ドッカン
m ドッカン
=====) )) ☆
∧_∧ | | / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( )| |_____ ∧_∧ < おらっ!出てこい>>382
「 ⌒ ̄ | | || (´Д` ) \___________
| /  ̄ | |/ 「 \
| | | | || || /\\
| | | | | へ//| | | |
| | | ロ|ロ |/,へ \| | | |
| ∧ | | | |/ \ / ( )
| | | |〈 | | | |
/ / / / | / | 〈| | |
/ / / / | | || | |
/ / / / =-----=-------- | | 実行ファイルをリネームしてもusageが使えるとか
シンボリックリンクで別名作っても大丈夫とか
>>409
課題で忙しくて、返信できませんでした。半泣きになりながらやってました。
本当にすみません。今からやってみますね。
>>409 きっとシベリア鉄道に乗っていてまだ家に着いていないのだろう。
画面が汚くて申し訳ございません。
gccコマンドで実行ファイルをその都度作成しなかったのが原因でした。
>>410 UNIX系OSでは compress, gzip, bzip2, xz とかの圧縮コマンドが自分が何のコマンドで動かされたかによって動作変えてるね。
同じ実行形式のバイナリを例えば gzip なら gunzip にリンクしておいてそれを実行すると gzip -d と同じ動きになる。
>>418 c言語をずっと使ってきたので、その名残があるかもしれません...
ずっと使ってきたのならなんで素人レベルのミスしてるのw
>>420 コマンドプロンプトの環境が初めてだったからです。
>>414 まあ初学者あるあるだなw
俺にも覚えがある
俺の予想が的中(
>>385)ということで今日から俺が半角ニキやで
>>402 gccとg++とか、grepとegrepとかあるやん
人間だって「陛下」と呼ばれたか「クズ」と呼ばれたかで同一人物でも行動ちがうだろ
Vimを使うんなら
:syntax enable
くらいしろ
viewなんじゃねーの
カリカリすんなよ
Macじゃどうか知らんがワイのvimrcはターミナルがカラー対応してれば勝手にsyntax on て書いてるで
Cってファイル毎のstaticが多くね? カプセル化だと思うが、それとか、do {} while(0)とか・・・
なして、そこまでしてCなんか使うんだべ?
変数は少ない方がいいが、クラスのメンバー的なもんは仕方ないんじゃないか?どこかに書かないと。
基本情報のc言語ってどんくらいのレベルなの?今度受けようと思うんだけど
>>429 今現在Cを使う理由は、以下しかない。
1. 最速のコードが欲しい
2. 最小のコードが欲しい
3, 他言語では出来ないほど細かく指示したい
4. 既存のCプロジェクトの継続
てゆうかマジで理工系であらかじめCを使うと分かり切っている奴以外は、
初心者がCを選択する理由はないから止めとけ。
あと、ここでこれまでやってた「動く/動かない」レベルのやりとりは、
大学の授業の先生や同級生に聞いた方が圧倒的に早いからそうしろ。
>>433 C++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために
さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが
簡単に生産されるようになってる。正直いって、C を選ぶ理由が C++ プログラマーを
追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。
C++ はトンでもなく悪い設計の元になりうる。どうせこの言語ではいつも STL やら
Boost やら、その他ゲロゲロベロベロの「素敵な」ライブラリの機能を使って、
それがあんたのプログラムに「役立つ」んだろうが、以下のことが起きる:
- うまく動かないときにもたらされる際限のない苦痛 (あと STL とか、特に Boost が
安定してるとか移植性があるとかいう奴は、どいつもこいつも大ウソつきで、
もはや笑えるレベルを超えている)
- 非効率な抽象プログラミングモデルで、2年たった後にこれらが実はそんなに
効率的じゃなかったことに気づくケース。でもそのときにはすでに全部の
コードがその素晴らしいオブジェクトモデルに依存していて、直すためには
アプリ全体を書き直さなきゃなんない。
言いかえれば、唯一まともで、効率がよくて、システムレベルで使えて、移植性がある
C++ ってのは、基本的に C で使える機能だけに限ったときなんだ。そして C だけに
限定するってことは、他の人がそれをめちゃくちゃにしないってことで、
ついでに沢山のプログラマが実際に低水準の問題を理解することができて、アホらしい
「オブジェクト・モデル」のたわごとを持ちこまないってことだ。
>>433 ワンチップマイコンの組み込みソフトはC言語1択だけどな。
C言語は最低限のスキルとして習得しておくべき。
>>434 俺はLinusの意見には同意だぞ。
ただ、それはC++が糞だと言っているのであって、Cがいいと言っているわけではない。
そして、俺が初心者に勧めるのはLL言語だ。(Ruby/Python/JavaScript/(PHP))
これらにはインタプリタ環境がある。それだけで初心者には全然違う。
それ以前に、型等の恩恵を受けたいのならC#の方が断然良い。
というか、後発言語はC言語の駄目な点を改良してきているのだから当然いろいろ優れている。
C++もこれに含まれる。だからC++も『正しく使えば』いい言語だ。
当たり前だがほぼ上位互換な訳でね。
>>435 ああ、それなら、以下を付け加えておこう。
5. C以外の環境がない
#if 0
って今となっては不要だよね。
なぜならフレームワークを適当に設定することで開発用と製品用のコードを分離できるようになってるから
VCSでブランチ切ってもいいし。
>>437 つ
https://stackoverflow.com/questions/3630601/why-use-if-0-for-block-commenting-out/3631513 要するにブロックコメントをブロックでコメントアウトするのに便利、だそうな。
ルールでなら // に統一しろ、とか言われる所だな。
(VCSというか)今はGit全盛だが、勿論それらもなかった頃からCは全面的に使われていたので、
今となっては古い(原始的)と思える機能も沢山ある。
これは古い言語の宿命だからある程度致し方ない。
コーディングルールでも「あれは白黒ディスプレイの為の物」と言われているものあるだろ。
>>435 ワンチップマイコンだとアセンブラも有力
>>440 そもそも最近使われてるのを見たことない
>>441 処理系が軽いのよ
postscriptは割と使ってるかもな。知らんが。
今をときめくpythonの大部分がCだろ
便利なimport含めて
最近プログラミングに熱意が持てなくなってきた
だれかたすけて・・・
とりあえず昔のC++みたいにC言語へのトランスレーターで作っとけよ。
昔々、とあるマクロ言語を開発してた頃はyacc/lex(bison/flex)を使ってたんだが、今どきもこういうコンパイラコンパイラを使ったりするんだろうか?
>>440 ForthってMINDのベースって事くらいしか知らない
sedとかで十分なことでもgoでパーサ使う人はいるな
質問です。
ソースが公開されてないライブラリを使用していまして
その中に特殊なファイルを読み込む関数があります。
事情があってその特殊なファイルを暗号化して保存したいのですが
暗号化してしまうとそのライブラリの関数から直接読み込めません。
暗号を解除する関数を通してそれが一時ファイルを吐けば可能ですが
大量にあるので出来ればもっと良い方法があればそれを採用したいと思っています。
例えば暗号解除後そのままメモリをファイルの様に扱う等は出来ないでしょうか?
よろしくおねがいします。
>>452 OSが分かんないけどtmpfsとか駄目なの?
read/writeを包んじゃうとか。LD_PRELOAD的な。
実行中のメモリが読めるならなんでもありという気もするが
>>453-454 さっそくありがとうございます!OSはWindowsです。
方法はありそうですね?
教えてもらったキーワードで自分でも少し調べてみます!
そのライブラリの特殊なファイルを読み込む関数のインターフェースはファイル名を求めているのだろうか?
それともファイルへのハンドルを求めているのだろうか?
前者と仮定してうまく凌ぐ方法はあんのかな? 名前付きマッピングオブジェクトかなんか?
>>456 ありがとうございます。ファイル名です。
OSはWin10です。
tmpfsはWinだと使えないのですね?残念です。これはまさに理想的だったので。
LD_PRELOADは関数を上書きできるのですね。こちら更に調べてみます。
どれもWindowsじゃ無理っぽいですね… tmpfsが使えれば一番よかったんですが。
FILE*で文字を直接参照するのと一旦文字の配列にコピーして参照するのとでは速度差はありますか?
コピーするのに、メモリ・時間を使うから、
コピーしない方が速い
>>459 WindowsでもRAMDiskは作れる(そういうツールがある)けど、エレガントな方法はファイル系のAPIをHookするって手もあるかな?
メモリマップトファイルが使えれば良いんだけど、バイナリ提供内部でファイル名で直接CreateFileしちゃってるなら難しいんじゃないかな?
俺が知らないだけでうまい方法があるかもだけど。
>>452 ちなみにどんなファイルを読むライブラリなの?
比較的単純なら自分で書き直す方が早いんじゃね?と思ったり。
sqlite みたいなのになってくると手に負えなそうだけど。
暗号化したボリュームに書き込みたいとかいう話ではないんだよな
ファイルマッピングだって、結局はディスク上のファイルイメージをメモリにキャッシュするだけだぞ
ライトバックキャッシュなので「書き戻せ」というコマンドを自分では書かないから
何か特殊なもののように誤解されやすいが、
ハード的にCSやWEがチャネルコマンドに変換されるとかそういうことは一切ない
パス名でしか読み込めないクソライブラリをありもので解決するならramdiskしかないな
ライブラリを修正できるなら俺だったら読み込み処理をコールバックにする
みなさんありがとうございます。むずかしそうですね…
ファイルの仕様も公開されてないので自分で描き直すのもむずかしいです…
理想的な流れとして以下のように出来ればいいのですがむずかしいのですかね…
1 暗号化したファイル読み込み
2 暗号解除
3 メモリに元ファイルとして生成
4 ファイル名を元ファイルを読み込む関数に渡してメモリ上のファイルを読み込む
>>472 ramdiskですか。ちょっとそちらで調べてみます。ありがとうございます。
ramdisk も中間ファイル書き出してその名前を渡すのとかわらんでしょ
いずれにしろ復号済みのファイルが実体化しちゃってる
>>473 難しいというか、技術的な実現方法はいくつか思いつくけど要件がよく分からないのでこれにすべきと言えないだけ。
>>474 面倒な手順だけど、fuse+ramfsってのもあるか
windowsにramfsがあるか知らんけど
>>473 RAMディスクなら速いだろうけど普通のファイルシステムとアクセス方法は同じだから普通にディスクにファイル作っても同じだよ。
そのディスクがSSDならば正にRAMディスクだしな(ちょっと遅いかも知れないが)。
そのファイルは本当にRAMディスクのような高速アクセスできるようなファイルシステム上に作らねばならないものなのか?
>>475-477 みなさんありがとうございます。
要件としては元のファイル自体が公開されているライブラリで読み込めてしまうのでそれを防止したいんです。
ようは簡単に読み込めなく出来ればいいだけなんですね。
>>473でも一応メモリ内に復号後のものが実体化されちゃいますがとりあえずこれが出来ればいいかなと。
もう少し自分でも色々調べてみます。
>>479 メモリ内だけじゃなくエクスプローラから丸みえだし、ファイルも普通に読み書きできるよ? <ramdisk
>>478 なんというか単に目に見えるところに作りたくないというだけなんですね。
原理的には読めちゃうんだと思いますがとりあえず素で通常のディスクに書き出すよりは少しはマシかなと。
>>480 ramdiskはそうなんですね… それだとマズイなあ…
やっぱり見えない形で展開できればいいんですが。
RAMDiskをNTFSでフォーマットして適切なPermission管理すれば良いんじゃね?
あとRAMDiskについては使用者のPCに勝手にそういう領域を作っても問題ないのかも気になりました。
アプリが終了すれば常に確実に領域がクリアされ解放されればいいんですが何かのアクシデントで残ってしまわないかとか。
もうちょっと自分でも色々考えてみます。
隠蔽かつ高揮発?を実現したいということならいろいろありそう。
windowsのfuseって昔あったよな。
すでに出てるけど、名前付きパイプかファイルマッピングオブジェクトじゃいかんのか
Windowsの話してやってんのに通じないやつが何か文句言ってらあ
パス名経由でしか読み込めないんだからありもので対処するならOS経由の手段に限られる
クソライブラリに手を加えられないなら自作するかramdiskで我慢するしかないよ
>>487 狙うとすれば ReadFile あたりだろうけど、あまりに根っこ過ぎて
ちゃんと狙い撃ちしたい箇所だけに限定できるのか正直わからんところ
>>492 狙うならCreateFileだと考えてた。
予めメモリマツプトファイルに復号化しておいてそのハンドル返せば、後はReadFileはHookしなくても煮るなり焼くなり好きにしてもらったら良いと。
APIHookかVFSを自分で実装するかになるんじゃね
前者の方が簡単そうだな
CreateFileMappingにわたすCreateFileのファイルハンドルは
すでにファイルシステムと関連付けられたファイルハンドルになる
メモリならINVALID_HANDLE_VALUEを渡す
ドキュメントにしっかり書いてあるのに
相変わらず低学歴知恵遅れは
口からデマカセの頭悪いテキトーなことばっかりいってるわ。。。
そもそも質問してるヤツはファイルシステムに復号化されたファイルができるのがダメといってるのに
相変わらずだわ。。。
この流れで初書き込みだけどソースが公開されていないで思いどうりに読み込めないのであれば自分で実装したほうがいいんじゃね
バイナリモードで読み込めばいいんじゃないの
dropboxは非同期にrsyncみたいなことしてる感じだな。
ここで求められてるのは同期だね
検討がつかない
そもそも使ってる関数のソースが未公開の前提らしいからな
中でなにやってるかなんかまったく分からんからこういう質問してるんだろうしな
きっとReadFileを呼んでるのだろうという程度のことしか分からない
それは質問してるヤツもその程度は分かってるハズ
そして、そのファイルを読み込む関数のインターフェースもよく分からない
ファイルハンドルを渡すのかファイルパス渡すとかも分からない
情報が一切ないから検討しようがないといいたいが
両方とも検討した結果、簡単ないい方法が思いつかない
別プロセスにしてCONIN$使うとかインチキくさい方法ぐらいしかパッと思いつかなかった
でな、この要件に至るまでの根本的な部分について知りたい
その暗号化したファイルを今までどうやって出力してたかという部分になる
読み込みはその操作と逆の操作をすればいいハズだからな
もし暗号化して出力するときに、平文のファイルを一時的にテンポラリに出力してから暗号化してるなら
入力するときに平文のファイルを一時的にテンポラリに出力するのは許容範囲になると言い張れれば
コレで解決する
コレでイケルハズ
みなさん色々と案をありがとうございます。
あれから自分で調べたり考えたりしてたんですが
どうにかファイルの構造を知る事が出来そうで
中身を自分で書き換える(復号化ロジック込みの読み込み関数を書く)事にしました。
非常にお騒がせしてしまいまして申し訳ございませんでした!
Cのテスト関係のツールでおすすめとかありますか?
業務ではなく個人の趣味としてのプログラミングなので,できれば無償・オープンソースなのがいいです。
https://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C ここを見ると,やはりCに関しても単体テストが最適なようですが…
? え,もしかして俺に対して?
そうだとしたら まったくの言い掛かりなんだけど……。
純粋に,単体テストのおすすめを訊きたいだけ。
>>508 世の中のすべてが自演に見えちゃう病気の人かも知れないから、スルーしておけばいいんじゃない?
「自演じゃないもん」なんて弁明しても証明できないところで相手すんなよ
無駄なことをする姿がバカっぽいぞ
ウィザードブックで勉強したって方いますか?
Cのレベル上げにも役立つかしら・・・
魔法使いがevalとapplyの球もってる奴じゃね
愛称違ったっけ?
『計算機プログラムの構造と解釈』です
>>517 です
λのやつ
>>518 一般の人間が翻訳に参入しているようですね
またトリップ付けないで書き込みしたの?
荒らしはもうやめておいた方が良いと思う
>>521 >またトリップ付けないで書き込みしたの?
>荒らしはもうやめておいた方が良いと思う
トリップつけないで書き込みするとどうして荒らしになるのですか?
というか、ほとんどの人がトリップをつけていないので、5ch は荒らしだらけ、ということですか?
添削お願いします。
>>524 minute と second は while の中のスコープで宣言するといい。
あと second を printf する時、お前のやりたいことは多分 %02d でできる。
0詰め2桁表示ね。
sleepは1秒待ってくれるとして、
前後の処理がどうしても正確に0秒でできるわけではないので誤差が溜まっていく。
定期的にシステムの時刻を見て秒の変わり目を検出するほうが正確。
>>524 これはこうすべきってことでないけど、画面を消す clear、これが何をやってるか調べると面白いかもよ。
とりあえず
clear > log
とかやって log に何が書かれてるか見てみるといい。
次に
cat log
とやると何が起こるか確かめてみるといい。
これがわかると画面を消すのに clear なんて外部コマンドを使わなくてもよくなる。
>>524 whileとelseは直後に空白あける。
↑ソースコード
↑実行結果
となりました。
「set number」と「syntax on」を初期設定したいのですが、どうすればいいですか?
あと、iPhoneのタイマーと比べた結果カウントが遅くなっていたことがわかりました。これは前後の関数を実行する際にノータイムでは出来ないことが原因だと考えられます。
>>529 ちょっとまて、
>>527 を試そうとしてる雰囲気だけど、clear > log とか cat log はソースコードに埋めるんじゃなく、コマンドラインとして叩くんだよ。
流れが速くて打てません。
while の中でminute,secondを宣言したら回るたびに宣言する事になるので、なんかダメだと思いました。
あと、ちゃんとしたタイマーを作るにはどうすればいいのか知りたいです。
画面が流れるんでなくて、部分的に書き換えたい感じ?
cursesを使うのじゃ
教え方の下手くそな教えたがりばかりで
あげくにcursesまで初心者に吹き込んで質問者大混乱
>>524 なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
そこは教え方の上手なあなたが教えてあげれば良い事だな
clear > log
cat log
Linux の基本コマンドも知らないような奴が、C をやるな!
10年勉強してからやれ
>>533 >>527 で言ってるのは
>>524 の実行とは別の話。
画面を消す方法の正体を調べる手順だから、ヒマな時にやればいい。
>>534 宣言はコンパイル時に解釈されるもので、実行時に「宣言という動作」を行っているわけじゃない。
だから実行時にかかるコストは無いから、ループの中に書いてもいい。
C は変数が見える範囲(スコープ)が { } の中になってる。
minute と second は while で回してる { } の中でしか使ってなく、かつ表示のための一時的な変数だから、それを必要とする範囲内だけで見えるようにすると分かりやすくなる。
変数のスコープは極力狭くなるように書くといいよ。
分かりやすさの点でもいいし、メモリ(スタック)の消費量も少なくなる。
正確なタイマーを作るならインターバルタイマーで調べてみるといいけど、まだそれを使えるレベルじゃないと思う。
>>536 curses ってなに?
>>534 1秒ごとに setitimer() とか使って割り込み掛かればいいんだけどね、普通のOSだとあまり正確にではないかも知れない。しかしただsleepするよりは正確だと思う。
割り込み使わないやり方で今と似ているけどましなやり方は次の処理開始時間までより正確に sleep することだ。
これは gettimeofday() でμ秒までの時刻を取得して秒が変わるまで何μ秒なのか計算して usleep() で sleep させればできる。
>>542 変数の宣言はコンパイル時に解釈されているのですね。わかりました。
「set number」と「syntax on」を初期設定にするにはどうすればいいですか?
>>545 printf '%s\n%s\n' 'set number' 'syntax on' >> ~/.vimrc
ていうかエディタの名前くらい書け。
まあset numberという設定名のエディタはVimくらいしか思い付かんが。
H8 (3694) と秋月キャラLCD(SC1602) のI/F 関数です。
//--------------------------------------------------------------------
#include<3694.h> // CPU のレジスター定義、その他関数のプロトタイプ
struct DATA_BUS{
unsigned char NOTUSE:4;
IO.PDR8.BIT.B7;
IO.PDR8.BIT.B6;
IO.PDR8.BIT.B5;
IO.PDR8.BIT.B4;
}; // IO.PDR8.BIT.B3 は不使用
#define LCD_RS IO.PDR8.BIT.B2 // P82を LCD RSに定義
#define LCD_RW IO.PDR8.BIT.B1 // P81を LCD R/Wに定義
#define LCD_E IO.PDR8.BIT.B0 // P80を LCD Eに定義
#define LCD_DB DATA_BUS // P83〜P87 のみをLCD D4〜D7 に定義したい
//--------------------------------------------------------------------
LCD_DB に構造体の入れ子(DATA_BUS) を定義しています。この書き方で動作しますか。この関数の作者はLCD_DB にunsigned char 型で下位4ビットのみ有効なchar 型を代入していました。
そもそもコンパイルできなかったのでは?
構造体のメンバにB4〜B7みたいな定義済みの定数は書けないよ。
ネットワーク系のコマンドというのが意味不明だが、socketインターフェースはある。
向いてるかといえば向いてないが、そういう低レイヤの話としては言語は何を使っても大して変わらん様な気はする。
ビットコのbot殆どがPythonやNode.jsばっかだけど
libcurl使えばスクリプト言語並みに簡単に使えるよね
なるほどソケットっていうのもあるのか。
無知なもので「ネットワークコマンド」と言えばwgetやらcurlやらのTCPクライアントだけを指すと思ってたw
curlってコマンドだけじゃなくてlibcurlも提供してくれてるんだね。
だったらpure CでもTCPクライアントが作れそう。
言葉の話だけどcurlは基本的にはHTTPクライアントだ。TCPの上に乗ってる。
TCPクライアントはtelnetとかncだな。ncはUDPも行ける。
TCPも基本的には難しくないが、異常系を考え出すときりがない。
大昔ソケットレベルから自前でHTTPクライアント作ったことある
TCPプロトコルを学ぶ良い勉強になるよ
相変わらず低学歴知恵遅れは頭悪いこといってるわ
ソケット通信でTCPプロトコルとか
オマエがソケット通信でやりとりしてんのはHTTP
ホントななんでココまで頭悪いのしかいないのか不思議
トランスファープロトコルにTCP/IP使ってるといっても
きっとこのスレの低学歴知恵遅れは意味が分からない
smtpもftpもほとんどが普通にtcp/ipだからな
いまどきのnetbiosも普通にtcp/ipだからな
昔はトランスファープロトコルにnetbeuiつかってた
で、今ではnetbios over tcp/ipで
nbtとかなんとかいってる
>>561 知らんテクニカルタームは使うときに確認しろよ
また低学歴知恵遅れが意味不明ないちゃんもんとけてるし
先にいっとくけどな
とてつもなく頭悪いこといってんのオマエだからな
まずその自覚がない
pop3もtcp/ip
sshもtcp/ip
httpsもtcp/ip
きっとな低学歴知恵遅れには
なにをいってるのいかが分からないとは思うわ
ホントな低学歴知恵遅れは
頭悪いことを自信満々でいうから困るわ
基本情報どころかITパスポート程度の知識でドヤってるのか
低学歴知遅れ君は
それにすら到達してない低学歴知恵遅れが
ドヤってるスレがこの板だからな
マジで低学歴知恵遅れはこの板から排除したほうがいい
有害
じゃあ「トランスファープロコトル」ってなんだか説明してくれよ…
なんだよ「ソケット通信でHTTP」って。
HTTPというのは
ハイパーテキストトランスファー プ ロ ト コ ル
だからな
ソケット通信(トランスファープロトコル意識する必要ない)で
HTTPの内容してるだけだ
わかった?
ソケット通信でHTTPの内容をヤリトリしてるのすら分かってないワケだからな
ここまで頭悪いと話にならない
低学歴知遅れ君ってプロトコルの意味を理解してなさそう
TCP Transmission Control Protocol
IP Internet Protocol
トランスポート層 TCP, UDP, DCCP, SCTP, IL, RUDP
似たような言葉はあるが、その表現は見つからないな
並行宇宙のどこかで使っているかもしれないが
ここではなさそうだ
あー。TCPというのはHTTPよりもう少し下層に位置する概念ってことかな?(合ってるか不安)
俺が作りたいなぁと思ったのは
$ xxx 'example.com'
とやるとブラウザでexample.comにアクセスして「ページのソースを表示する」機能を使ったときのような出力を返すコマンド。
これはTCPクライアントじゃなくてHTTPクライアントか。
>>577 そう
普通はHTTPプロトコルのGETメソッド使う
POSTでも良いが、設定が多少複雑になる
「トランスファープロトコル」は星の数ほどある「〜転送プロトコル」の用語として使われるけど、トランスファープロトコル単体で使用されてるのは聞いたことないね。
きっとトランスポートプロトコルの間違い。
>>577 まあGETするだけだったらそれこそTCPだけでもいい。
勉強としては、HTTPサーバにtelnetしてGETコマンド(と、いくつかのヘッダ)を打ち込んでみると、イメージがつかめるのではないかと。
半角久しぶりに来てんじゃん
やっぱお前が釣らなきゃ盛り上がらんな
勉強したいならCで
スティーブンス本で検索すれば、役に立つ書籍があるよ
使いたいだけならpostmanとかcurlでえんじゃね?
半角くんとかvoidくんとかこのスレには個性的な人が多いねw
すみません、C言語出テキストファイルの特定行を書き換えたいのですが
全て配列に読み込む→変更する→全て書き戻す
という方向しかないでしょうか。
変更前 01.txt
a=1
b=1
c=1
変更後 01.txt
a=1
b=0
c=1
こういった変更を行いたいです。
標準入力から1行ずつひたすら読み込む
特定行以外をひたすら同じ内容を標準出力に出力する
特定行だけ変更内容を標準出力に出力する
できた
aho.sh
----
#!/bin/bash
aho < 01.txt > 01_tmp.txt
mv -f 01_tmp.txt 01.txt
引数でファイル名を指定するどうでもいいことがどうしてもしたい場合は
一旦、プログラムでテンポラリファイルに書きだして
プログラムで最後にmvする必要がある
>>588 その例みたいにサイズが変わらないなら直接書き換えることは可能
>>588 そういうのはC言語ではやらないのが正解な。
どうせ逆ギレされると思うが、そう言われたことだけでも覚えておけ。
>>588 UNIXならmmap()、WindowsならCreateFileMapping()を使ってファイルの内容をメモリにマップするとか。
書いてあることをすべてCでやりたいなら
コレでいける
ぜんぶメモリにいれる必要はない
@ 入力ファイル(01.txt)をリードオンリーでオープン
A テンポラリファイル(出力ファイル)をmktemp()で取得
B Aで取得した出力ファイルをライトオンリーでオープン
C 1行ずつ読み込んで1行ずつ書きこみ(
>>591)
D 入力ファイルと出力ファイルをクローズ
E 入力ファイルをremove()で削除
F 出力ファイルをrename()で入力ファイルに移動
ものすごい大きいファイルが入力ファイルになった場合対応できない
オフセットズレが発生するファイルの更新はファイルの全面書き出し以外に方法はない
ファイル後ろの方だと大きなファイルでも部分的な書き直しで済むんだよね
皆さん回答ありがとうございました。
やはり処理的にはすべて触らないとダメそうですね。
>>591さんの例はfopenとか必要ないのですか。
>>601 ファイル入出力ストリームなら必要
あの例は標準入出力を指定してるだけ
すべて触る必要があるかはデータ構造次第
更新するデータ域をブロック分割、
ブロックマップをメタ管理とかは
バイナリなら一般的な手法
テキストだとスペースパディングで
ブロックやエントリ管理できそうだが
そんなことやってる奴は見たことない
>>601 stdin から読むようになってるからシェルのコマンドラインからならリダイレクトで読ませれば良いだけだよ。
cat 01.txt | sed s/b=1/b=0/
>>594 スタートアップから渡される argc, argv を「使わない」のだから void なしが妥当なのでは?
>>602 × なんとなく
○ ほぼ確実に
「Cで」「Cで」「Cで」、初心者はCしか出来ないからそれしか考えられない。(選択肢がない)
初心者あるあるだけども。
実際これ、Cで処理されてCバイナリを引き継がされても大迷惑だし。
>>588 マジな話、上司が居るのなら上司に聞けって。これ、Cでやったら大迷惑な話だし。
聞くのが迷惑だと思っているのなら、この件については聞かない(報告しない)ほうが迷惑だ。
上司が居なくてど初心者なら、この際にスクリプト言語を覚えろ。
>>606 その論法でいうならvoidなし&返却値なしだな
純K&Rスタイル
main()
{
/* do something */
exit(0);
}
例の半角野郎がまた湧いたか、しつけーな
何が上司だ、ここはム板だぼけ
>>606 引数 void って初めて見たぞ。文法的にありなのかこれ?
未だ許されないvoidおじ
特定行の書き換えですが
・bの値を反転させたい(0なら1、1なら0)
・b=の行は複数出現する可能性がある()
・複数出現した場合は一番最後に出現した行の値を反転の対象にしたい
・書き換え後はb=の行は1行だけにしたい
・書き換え後はできれば
a=...
b=...
c=...
な感じでソートしててほしい
これはC言語で出来ますか?
どうやったらいいでしょうか?
>>612 「出来る/出来ない」なら、そりゃC言語で「出来ない」って事ははほぼ全ての事例で無いよ。
どうやったらいいか、なら、その場合は俺ならExcel使うね。規模的に無理ならシェルスクリプトを使う。
何でもCでやればいいわけではない。
そのお題を実際にCでやる事なんて無いから、練習用なら意味無いし、
本番としてそれをCでやる気なら、間違ってるから止めとけ。
>>588の続きなのか
>>612 ソートするなら全て読み出すのが一番楽だよ
コードの書き方みたいなこんなもんを上司に聞けとか
よくわからんが、協力会社で入ってるリーダーかなんかか。。。
すげえな、そういった会社の文化をオレは知らないが
そもそもそんなとこが未教育なゴミつれてきたら大問題だからな
必死になるのも分かるわ
で、だれでもすぐ分かってるコマンド書いてドヤ顔して低学歴もいるしな
この程度ならCで書いても
普通にCで書く練習になる
Excelで手作業とかは論外です
シェル芸でもいいです
誰かできませんか?
>>617 どこまで書いたのか、現状のコードを貼ってみなよ
>>617 お前以外のみんな出来るっての。
お前がコードクレクレ君だからみんな適当にあしらってる。
お前が努力してる(=コードを試しに書いてみたが動かない)のなら、もう少しましな回答も出るだろうさ。
こんな感じでどうかな
・空行はそのまま出力されてしまう
・代入文は1行に1文のみで X=n の形式
が前提だけど
awk -F= '{if($1=="b") b=$2; else print;} END{printf("b=%d\n", xor(b, 1))}' a | sort -u
>>621 tacで逆順出力、sedで初回マッチのみ置換、sortでソート出力
tac なんてコマンドがあるんだな、サンキュー
sed 使った場合、0と1の交換と、初回マッチ分以外は出力しないようにするの、難しくない?
Ruby で作った
text = File.read 'data.txt'
ary = [ ]; index = [ ]
text.each_line.with_index do | line, idx | # 各行・添字
line.chomp! # 末尾の改行を削除する
ary.push line # 各行を配列に入れる
# 先頭文字列が、b= なら、添字を配列に入れる
index.push idx if line.start_with? 'b='
end
return if index.empty? # 空配列なら処理なし
first = true # 最初の1回だけ処理する
index.reverse!.each do | num | # 後ろから削除するために、反転する
if first # 最初の1回だけ
first = false
case ary[ num ][ 2 ] # 3文字目
when "0" then ary[ num ][ 2 ] = "1"
when "1" then ary[ num ][ 2 ] = "0"
else # 処理なし
end
else # 2回目以降は削除する
ary.delete_at num
end
end
puts ary
Rubyもいいけど、こういう小規模な操作にはシェルスクリプトとかが適してる気がする。
>>612の内容だけど、誰も聞かないのであえて聞くけど
b=以外は何も加工せずに複数あればそのまま出力で良いのか?
その場合、ソートは=の右側の数値順にするのか、文字コード順にするのかか
データによっては、a=、c=、d=の行が多数出力される中でb=の行だけ1行になる
ってことで良いのかな?
私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。
@ [出力A] a=とc=を抽出(使うコマンド:grep)
A [出力B] b=0の1〜末尾-1行を抽出 (使うコマンド:grep|head)
B [出力C] b=1の1〜末尾-1行を抽出 (使うコマンド:grep|head)
C [出力D] b=0の末尾行を抽出し置換 (使うコマンド:grep|tail|sed)
D [出力E] b=1の末尾行を抽出し置換 (使うコマンド:grep|tail|sed)
E [出力F] [出力B]、[出力E]、[出力C]、[出力D]コンカチネーションしユニークにする (使うコマンド:cat|uniq)
F 出力結果 [出力A]と[出力F]をコンカチネーションしソート(使うコマンド:cat|sort)
とりあえずコレでいけるハズ
あとはがんばりなさい
だけでやるとはオレは一言もいってない
使うコマンドを限定した覚えはない
ソートはa,b,c...順です
b=以外は重複を許可します(ソート後の出現順は考慮しなくてよい)
(処理例
入力データ
c=0
a=1
b=1
c=1
a=0
b=0
出力データ
a=1
a=0
b=1
c=0
c=1
チューリングマシンならなんでもできて当たり前なんや
Cのプリプロセッサも計算完備だしな。誰かがcppでフィボナッチ数列出力してたな そういや
こんなんではどうかな
sed -e ":l; N; s/\nb=[01]\n/\n/1; $p; b l" 01.txt | sed -e "/b=1/{;s/b=1/b=x0/;};/b=0/{;s/b=0/b=x1/;};/b=x/{;s/x//;}"
bが1行しかないとうまく行かないな
ちょっと手直し
sed -e ":l; N; /b=.*b=/{;s/\nb=[01]\n/\n/1;}; $p; b l" 01.txt | sed -e "/b=1/{;s/b=1/b=x0/;};/b=0/{;s/b=0/b=x1/;};/b=x/{;s/x//;}"
並び替えはsortでやってください
大したことはしてませんw
前半のスクリプトで最終行以外のb=の行を削除し、
後半のスクリプトで置き換えをしてます
つかさ、丸投げに答えてやる必要も無いだろ。
ただの一行もコード書いてないだろこいつ。
622じゃだめなんか?
cat <file> | awk -F= '{if($1=="b") b=$2; else print;} END{printf("b=%d\n", xor(b, 1))}' | sort
てか、Cのスレで質問者もCでどうやるか聞いてるのに誰もCで答えてないw
ま、Cで書く気が失せる問題ではあるが。
頭の体操にはなったろ
スレを活性化するためには呼び水って必要なんだと実感
C言語でやるとしたら
b=で始まる行以外は適当な一時ファイルに出力し
b=で始まる行だけはメモリー上に格納しておく
b=行が出現する度に、あたらしい行データでメモリー上を更新する
EOFまで処理したら、一時ファイルとメモリー上のデータをマージする
その際にb=の値を所定の値に置換する
順番は後にソートする前提なので適当で構わない
ソートは外部コマンドでやらせて良いだろうね
>>645 591がCで答えてるだろ
ちょっと小馬鹿にしたような内容だが
小出し小出しで来る質問者には適切だったと
だんだん思えてきてる
お前らがほどよく食いつきそうな質問考えるのも大変なんだぞ
流石に591はネタとしか思えない
というか、酷すぎだろう
C99時代のhello worldプログラムを考えてみた。
#include <stdio.h>
#include <stdlib.h>
static inline void
print_hello(void)
{
puts("Hello, C!");
}
int
main(void)
{
print_hello();
exit(EXIT_SUCCESS);
}
exit()関数を使ったり、main()関数の中に直に処理を書かないとか色々。
なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
>>653 あれ?それ、コンパイルすると警告出ないか?main()が何も返してないって。
いや、exit()を理解してくれるコンパイラなら何も出ないかも知れないけどね。
>>655 c99 -O2 -Wall -Werror -Wextra hello.c -o hello
これで無警告だった。
c99はGNU/Linuxだとgcc -std=c99を実行してる。
icc -std=c99 -O2 -Wall -Werror -Wextra hello.c -o hello
でも成功。
GNUのコンパイラでもIntelのコンパイラでもちゃんと処理できるのでいいんじゃないかなぁ。
main に限り 戻り型int としながらも return で値を明示的に返さない場合
暗に return 0; とするってなかった? (653 で exit() 無しでもセーフ)
c99から(とc++も)main()は特別扱いで省略時はreturn 0;と扱われる
とググったらでてきた
なんでmain()だけ?どうせなら関数全てそうしちゃえばいいのに、と思わなくもない
>>659 「書かないこと」が一命令と等価ってどうよ?
不定の戻り値なんて殆ど使いもんにならんから
戻り値がスカラー型ならコストも低いし 0 返してる扱いでいい気がする
>>656 -std=c99いらねって
デフォだぞ今のgccは
確かSolaris+sunのコンパイラではreturn 0 もexit(0)も書かんかったら$?は不定だったような記憶がある
>>669 で、誰が gcc で -std=c99 を指定してるって?
恥の上塗りすぎる w
マ板で見つけたんですけど、何がやばいんですか?
355 仕様書無しさん sage 2018/10/17(水) 10:31:44.15
https://qiita.com/hamichamp/items/7b7a7ee091a6856ac900 こんな奴でもフリーランスになれるんやな
>>676 すみません勘違いしてました
このブログの投稿者がフリーランスでこの記事の人のことではないんですね
>>674 確かに、俺が何を言ったのか、おまえ解ってないな
だから聞いたのか
672で自らの理解力を露呈して自爆しやがってw
>>653 だれかこれに触れてほしい(自己主張)
C99というかモダンCプログラミングの初歩として
(手前味噌だが)かなりいい感じだと思うんだけどどうかな。
とりあえず今までのhello worldプログラムは
・return文、しかも0固定をmain()関数に書いてしまっている
・main()関数に直に処理を書いてしまっている。
などの理由であまり実際に即していないと思うのよね。
>>679 人は互いに理解し合えるという幻想に対する反例として読んでます
別にmain()に処理書いてもいいと思うがな。パッと見てわかるぐらいの小ささなら。
まあしかしこれは各個人の信仰の問題であって言語そのものの制限ではない。
そこまでなんとかしたいならそういう言語を作るしかない。
布教活動すれば信者は増えるだろうが相変わらず教義に反する異端者はこの世に存在し続ける。
>>679 hello world に求められることは、できるだけ少ない手数でイメージ通りの結果が得られることだと思うんだ。宗教の前に。
>>653 に込められた思想が分かるようになるのはずっと後。
まあ、ある程度分かるようになってからのお題としてここで議論するのは面白いかもね。
mainの中にputsの代わりに別関数呼ぶと言うのはビジネスロジックをmainから極力排除するという意図があると推測するけど、最初の一歩としては複雑すぎる。
いきなり最初から関数、inline、static、exitの仕様を理解する必要があるので。
スタイルの問題じゃねえ
sizeof(32)とか書いてるアホが指導員やってることが問題なのであって
voidといいsizeofといい、今年は豊作だなw
voidくん見てる〜?
sizeof(32)くんて友達出来てよかったねw
ブルーボトル日本開店おめでとう。
西海岸で飲む、いつもの味。僕にとって新鮮みがないことが、成功の証だと思う。
>>678 で、ごたくはいいから
>>672の回答書いてみろよ
まあ書けずに逃げ回るんだろけどな w
>>653 >>679 ゴミだね
お前ら初心者はもう少しわきまえた方がいい。
初心者が思いつきで出来る領域はCにはもう残されていない。そういうのがやりたいのならGoやRustに行け。
C99からもう20年近く経つ。
その間、誰もそういうことをやらなかった(或いは、やっても流行らなかった)のは、その必要がないからだ。
今のお前のように、無視されて終わったからだ。
それが何故ゴミなのか理解出来ないうちは、もっとコードを書くことだ。
>>691 俺は半角君ではないし、あおり抜きでゴミだって事だよ。
マジでそういうことを世界中の誰も20年間しなかった理由を考えてみろ。
この期に及んでお前らみたいな糞初心者がCに溢れている意味が分からんが、
お前らはどうやらどの言語でも良くて、単に流れているスレに溜まっているだけだろ。
だから無理にでも流れないと不安になるから無駄釣りしているわけでさ。
そういうのも迷惑だから止めろ。
マジックNGワード「お前ら」 ※2(5)chの全板共通
釣りレス or 気が触れた方のレス or 玄人ぶった素人のレスなど。
ウザいレスを回避する際に使用します。
参考:
【レス抽出】
対象スレ:C言語なら俺に聞け 148
キーワード:お前ら
抽出レス数:18
>>693 お前らが駄目なところはそういう所なんだけどな。
最近パヨクが急速に腐ったのも同じ理由だ。
最近は693みたいに、「俺の希望する意見じゃなきゃイヤ」な奴が多すぎる。
ネットってのはリアル以上にいろんな人がいて、様々な意見を聞ける。
その中で、どんな偏った意見も、探せば出てくる。
フィルタ(ブロック)しまくれば都合がいい意見しか見えない状況が簡単に作れる。
これは昔で言う、イエスマンで周囲を固めた状態だ。一番やってはいけないと言われていたことだ。
そしてそれをやりまくったのがパヨクで、今は世間とずれまくってるだろ。
今の状況で俺をブロックするのなら、お前らはパヨク以下に落ちる。
勿論、俺が言っていることが間違いだらけで、読む価値無しと判断するなら、フィルタするのは自由だ。
しかし実際の所、
>>679を肯定的に評価している奴なんて誰もいないだろ。俺が一番はっきり言っただけであってさ。
この状況で俺をフィルタするってのは、お前はパヨク予備軍だって事だよ。
世界中を探して
>>679を褒めてくれる奴を見つけだし、そこに移住すれば、君らは幸せになれるだろう。
俺も君らが居なくなって清々するし、有り難いから、そうしてくれれば助かるのだが。
そもそも、この程度でNGが必要な奴はここ(2ch)に来るべきではないし。
まあ、
>>693には俺が見えてないはずだから、この話はここで終わりだが。
お題は「モダンなCでHello World」です
ファイッ!
弁明しておくと、俺の
>>653 は釣りじゃなくて、まったくの興味というか
こういうプログラムのほうがいいんじゃないかという提案だった。
結果的に荒れ気味になってしまったのはすまん。
(個人的には旧hello worldよりも洗練されていると思うんだけどなぁ……)
>>697 お前も何故か必死なんだな。
同一人物でないのなら、単に
>>679や
>>653を褒めてやればいいだけだろ。
そこで「気に入らない意見」(に反論)ではなく、
気に入らない意見を言った「俺」にフォーカスしてくる辺りがパヨク予備軍なんだよ。
実際の所、ネット上には間違ったことを言う奴も多い。それが俺だというのならさておき、
誰も
>>679を褒めてないし、20年間世界中でそんな馬鹿なことをした奴が居ないのも事実なんだから、
そのことをふまえて普通に考えれば、
>>679がゴミなのは事実だし、自明だろ。
ゆとりはスクラムを組んで連呼し、黒を白だと主張する事がよくあるが、それは明白な間違いだよ。
てゆうか、一体お前らは何がしたいん?
ゴミをゴミだと言われない匿名掲示板なんて、逆に存在価値がないだろ。
腐されたくないだけなら、FaceBookでやるべきだ。
後ろ指さされることはあっても、堂々とゴミだと言われることはあまり無いはず。
それがお前らの望みなんだろ?
(今回の
>>675もそう。ここでボロカスに言われることはあっても、直接言われることがないからあのままなのであって)
>>699 洗練されているとは思うが学び始めたばかりの初心者に最初に見せるサンプルプログラムとしてはやはり複雑なのではないかと思う。
>>702 褒める気があるのならもっとはっきりと褒めろよ。
>>703 そういうところがお前らの駄目なところだ、と言っているわけだが。
まあ所詮それがゆとりの限界だよな、とは思う。
否定されたことがないから否定されることに過敏なのか?最近この手の輩はよく見かけるが。
しかし、俺をゴミ呼ばわりするお前ですら
>>702程度しか言えないのなら、
逆に俺の意見「
>>679や
>>653はゴミ」を補強しているではないか。
俺をゴミ呼ばわりするのなら、もっとベタ褒めしないと筋が通らないだろ。
そのことにすら気づけないのか?
>>699 一応マジレスしておく。
ただし技術的な答えは書かない。
これは最近、この手で煽って答えを書かせる輩が増えていると感じるから。
そういう奴らにはエサを与えず、餓死させるのが習いだ。
君のせいではないから、この点は安心していい。
> こういうプログラムのほうがいいんじゃないかという提案だった。
これはいい。
というか、こういうのを自由にやれるところがいいところであって、
逆に、遠慮して何も言えないようなら匿名掲示板の存在価値はない。
だから、思ったことはどんどん言えばいいし、
それについて文句を言いたければ言えばいいし、結果的に荒れても問題ない。
ここは、そういう場所だから。
逆に、FaceBookや実名空間で出来ることをここでやるべきではない。
実名空間で口頭でやった方が手間もかからず早いからだ。
問題は、ゴミをゴミだとはっきり言いきった俺に対して、
言い方が良くない系の言いがかりを付けてくる馬鹿が多いことだ。
匿名掲示板で全員が意見をオブラートに包んで言うようになったら存在価値なんて無くなる。
そもそも、それを求める奴がここに来るのも間違っている。
そんな奴は、少なくともコテハン制の所に行くべきなのさ。
相変わらず低学歴知恵遅れたちは
超どうでもいいことで
超どうでもいいレスをひたすら書きこんでるわ
>>700 言えてる。
CASL2の勉強で1から140までの合計を求めて、その数を文字列に変換するプログラム書いたんだけど、どうよ?
ほら。Cって組込にも使われるじゃん。
printfが無い環境のために良い練習じゃん。
(実際、組込Cでprintf無いけど、キャラクタディスプレイ付ければ文字コードを送ると表示される環境と言うのがある)
なぜ140かと言うと各桁が同じ数字じゃ無いので保存場所の間違いに気付きやすいから。
4桁は合計で出た数の桁数。
キャラクタディスプレイの代わりにputs縛りって事でさ。
>>699 hello worldの目的からすれば、意味のある動作する完全なコードを最もシンプルにかつ素直に表すことが重要だと思うから、個人的には従来のhello worldの方が「洗練」されてると思う。
>>705 でもvoid君はC言語詳しくないじゃん
見立てによるとJava厨だからな
voidは知ってるが引数voidは知らない、
となればJavaスレで相手にされなくなってCスレにマウンティングしに来たクズだ
>>37はもう伝説だろ
>>689 おまえの勝手な妄想にどう答えろって言うんだよアホ
>>711-712 お前らがC言語に詳しいつもりなら、それなりの見解を添えて
>>679や
>>653に対しての意見を言えばいいだけ。
誰一人として褒めてない(≒俺の意見も正しい)この状況で、
そういうゆとりスクラムでゴネて駄目なものをさも素晴らしいことにしようとするからゆとりは嫌われる。
お前らは自覚出来ていないようだけども。
いずれにしても、ゆとりスクラムなんて誰も得しないから止めとけ。
お前ら自身も学ぶ機会を失っているだけだし。
表面的な言い争いでスレが潰れることはない。
>>679だって、本当にそう思って主張したのだから、それでいい。それで荒れるのなら、それも仕方ない。
ただ、スクラム組んでるゆとりみたいに、自由な意見を排除しようってのは、スレを毀損し、潰す。
だからそれは止めろと言っている。
お前らが望む「どんな糞コードでも褒めてもらえるスレ」は、ここ(2ch)では存在し得ない。
お前らみたいに、自分の意見を全く言わず、ただ他人を馬鹿にしたいだけの奴が居るのも、また事実だから。
ただここら辺、何度言ってもゆとりには通じないところをみると、やはりギャップがある。
俺には、ゆとりが望む「どんな糞コードでも褒めてもらえるスレ」は存在価値が無いと思える。
読んだとしても、全く上達に繋がらず、むしろ道を誤ることになるからだ。
ここら辺がマジで通じないのは何故か、分かる人がいたら、解説願いたい。
ゆとりは今の居心地の良さ、つまり、書いてある内容の正誤より、言い争いのないだけのスレを好む傾向がある。
そして、それが長期的にはスレを殺すことも認識出来ない。実際、それでスレがゴミ化するのを何度も見てきた。
これがゆとりの特性、ってことなのかね?
まあとにかく、誤解無いように何度も言っておくが、
俺自身は653や679のような主張はやりたいのならやればいいと思っている。
そして中身はゴミだという見解だ。
結果的に荒れたようになっているのは679のせいではないから、萎縮する必要はない。
が、誰も褒めないコードを素晴らしいと思えちゃうのは、679に技術的な問題があるんだよ。それは自覚した方がいい。
>>714 指摘あざす。荒れ気味になっちゃったのは残念だけど、俺のコードに関して(賛否関係なく)F/Bを貰えたのは嬉しい。
差し支えなければどの辺りがゴミなのか教えてもらえないかな。今後に生かしたい。
というよりも、既存のhello worldプログラム——つまり
#include <stdio.h>
int
main(void)
{
printf("Hello, C!\n");
return 0;
}
で、(C言語の関数としてはあまりに多機能で異質な)printfを使っていたり
組込み機器向けのプログラムでもないのにmain()関数をreturnで終了していたり
main()関数のなかに直に処理を書いてしまっている点は、問題ないと考えているってことだよね。
これらはこのプログラムを書く初心者にとっては不要な心配だということかな。
ほんと人間は分かり合えないという実例だな
その2つの指摘のどちらも誰にも共感されないだろう
世界は広いから「誰にも」は言い過ぎかもしれないけどさ
>>715 組み込み機器ではmain()関数をreturnで終了せよと?
>>714 >>679や
>>653への意見以外の事を長文で沢山書いてるのは君だ。
もっと自分のやっていることを自分で見た方が良い。
>>713 勝手な妄想?
> c99はGNU/Linuxだとgcc -std=c99を実行してる。
> icc -std=c99 -O2 -Wall -Werror -Wextra hello.c -o hello
> でも成功。
に対して
> -std=c99いらねって
> デフォだぞ今のgccは
って書いたアホがいたって話なんだが w
>>719 だから書いたが
それがどうしたんだよ
おまえiccがどうたらぬかしてたろ
ちゃんとそこをからめて説明してみな
半角はまだコード書き込んだりする分
>>714よりマシだな
>>715 どちらがより初学者向けかの比較の問題だと思う。
既存のhello worldが今の時代に則して最適とは思わないけど、それにも増して貴方のhello worldがいきなり覚える要素が多すぎて適切じゃない。
ちなみに組み込みを何か勘違いしてるっぽいけど、普通はmainからreturnさえしない。
>>720 -std=c99
って書いてあるのは
1. > c99はGNU/Linuxだとgcc -std=c99を実行してる。
2. > icc -std=c99 -O2 -Wall -Werror -Wextra hello.c -o hello
の2つ
1. のことを言ってるならc99コマンドの作者に言え
2. のことを言ってるなら精神科か眼科に行け
って話な w
>>722 > 普通はmainからreturnさえしない
マジかw これは恥かしい勘違いだわ。
普段まったく組込み関係に触れてないのがバレてしまった。
OSが存在しない組込み系ではあり得ないこともない
通常は電源投入後スタートアップルーチンからmain関数を呼び出して電源遮断するまで永久ループ
万一、電磁パルスや放射線等でマイコンが動作しプログラムカウンタの値が狂ってループ外に脱出した場合は強制リセットで再起動
void main(void) {
while(1) {
... // メインループ: 永久ループで脱出不可
}
_asm("JP VECT_RESET"); // 異常発生により強制リセット: スタートアップルーチンへ強制ジャンプ
}
確か今のコンパイラ(icc,gcc,clang)ってデフォルトで-std=gnu99か-std=gnu11じゃなかったっけ
>>726 そうかもしれないが
gnu99とc99はちょっと動作違うじゃん?
と言ってもトリグラフの警告の有無とかその程度だけど。
c99コマンドは-std=c99だけどiccコマンドは-std=c99を明示すべきと判断した。
>>729 プロセスベース以外の組み込みソフトでmainからreturnするコードを見たことないんだけど、もし差し支えなければ後学のためにどんな作り方があるのか教えてください。
>>731 そんなもんmain呼ぶcrtの方で無限ループするように作っとけばできるじゃん。
>>707 に誰も挑戦しねーし。。。
千の位は1000で割れば数が出るし、余りが千の位を引いた数だから、今度は百の位、十の位ってする。
各位の数字に16進数の30(文字コードで数字の0)を足すと文字列の完成。
(Cだと末尾に¥0も必要。“0000”とか文字配列作れば自動で挿入される)
大まかなロジック教えれば書けるだろ。
分かってみれば大した事してないんだよ。
>>733 「そういう作りもできる」ってのは分かります。
mainの外部に無限ループのあるソースは見たことないので普通はそんな事しないと思ってました。
経験的には、exitしちゃだめというシステムはあったけど、returnしちゃだめというのはなかったなあ。
returnに到達しないプログラムはもちろんあるけど。
>>735 補足です。
mainからreturnした後に無限ループってのは普通に見ます。
あくまでmain自体を無限ループで囲んでいるのは見たことなかったです。
>>723 つまり精神科に行くのはおまえってことだな
語るに落ちたなw
一周まわって、何かあったらどんどんexitするようにしたよ
メモリリークしてるかも? ⇒ 一応プロセス再起動
処理が滞ってきたかも? ⇒ 一応プロセス再起動
便利なOSを使うようになってからどんどん怠ける一方よ
めっちゃプロセス起動速いOSあってもいいよねと思ったけど、結局LWPのスレッドになるんだろうな
メモリリークとか、そこら辺勉強するのにおすすめの方法ある
たんにfreeとかdeleteすればいいだけだからなあ。
オブジェクト指向・デザインパターン一般の教科書読めば自然に身につきそう
メモリーリークの勉強は本で学ぶよりも
痛い思いをして体で覚える方が身につく
個人の感想ですけどw
C言語は言語レベルではオブジェクト指向はサポートされていない
>>743 しかし身に付いても中々メモリリークのバグはなくならないよな。
やはりその辺が心配なら他の言語使った方が良いと思う。
クソコードに揉まれてクソコード書きになった人も多いから、クソを体験しろとも言えんな…
長い時間かけてデバッグして身についたもんは確かにあるけど、人生は貴重だからな。
インスタンスのライフタイムさえ設計すればメモリリークなんぞ発生しないと思ってるわ
誰もがそう思うのだよ。
しかしこの世は思い通りにはならんのだ。
プログラムは思った通りには動かない、書いたとおりに動く
俺はC使い始めて3年のペーペーだけど、リークなんてやらかしたことないし、今後もやらかすと思えない
敗北を知りたい
>>752「malloc()使ったら負け」
strdup()「……」
リスト構造でありそうな、作った所と殺すところが入れ子になり難いのは気をつかう
C++erだけどmallocなんてもうしたくない
まあ、勉強するときにしてるけど
あと開放された後なのに、そのポインタのデリファレンスしてたり
別スレッドで確保した時、そこに割り当て発生〜別スレッド側の正当な書き込み
→ 不当な側のデリファレンスでブッコワレーターな値 とか
C++だと工夫すればかなり自動化できるんじゃないか?
Cと同じようにも書けるからハマる時はハマるだろうけど。
734 デフォルトの名無しさん (アウアウカー Safb-dUTK)[] 2018/10/18(木) 09:19:15.80 ID:qf9NxgCDa
>>707 に誰も挑戦しねーし。。。
千の位は1000で割れば数が出るし、余りが千の位を引いた数だから、今度は百の位、十の位ってする。
各位の数字に16進数の30(文字コードで数字の0)を足すと文字列の完成。
(Cだと末尾に¥0も必要。“0000”とか文字配列作れば自動で挿入される)
大まかなロジック教えれば書けるだろ。
分かってみれば大した事してないんだよ。
; SAMPLE3 12,15,42
PROG1 START MAIN
MAIN LD GR0,MIN
LAD GR1,0
LOOP CPA GR0,MAX
JPL LOOPEND
ADDA GR1,GR0
ADDA GR0,STEP
JUMP LOOP
LOOPEND ST GR1,SUM
LAD GR2,0
LAD GR0,0
CPA GR1,BMAX,GR2
L1000 JMI L1000END
SUBA GR1,BMAX,GR2
ADDA GR0,STEP
CPA GR1,BMAX,GR2
JUMP L1000
L1000END ADDA GR0,ZERO_S
ST GR0,STR,GR2
ADDA GR2,STEP
LAD GR0,0
CPA GR1,BMAX,GR2
>>753>>754
何をしたらリークするのか逆に聞きたい
仕様を読んでないアホな顛末は要らんです
L100 JMI L100END
SUBA GR1,BMAX,GR2
ADDA GR0,STEP
CPA GR1,BMAX,GR2
JUMP L100
L100END ADDA GR0,ZERO_S
ST GR0,STR,GR2
ADDA GR2,STEP
LAD GR0,0
CPA GR1,BMAX,GR2
L10 JMI L10END
SUBA GR1,BMAX,GR2
ADDA GR0,STEP
CPA GR1,BMAX,GR2
JUMP L10
L10END ADDA GR0,ZERO_S
ST GR0,STR,GR2
ADDA GR2,STEP
ADDA GR1,ZERO_S
ST GR1,STR,GR2
OUT STR,LEN
RET
MIN DC 1
MAX DC 140
STEP DC 1
SUM DS 1
BMAX DC 1000,100,10
ZERO_S DC #0300
STR DS 4
LEN DC 4
END
>>742 >>748 それは甘いと思います
>>752 気がついていないだけだと思います
まあ、CASL2のコード載せたからって書くやつが現れるなんて思ってないが。。。
本っ当にお前ら終わってるな。
プログラマーになり損なった俺より、なお悪いわ。
>>764 malloc()等でメモリ確保してfree()しなければメモリリークになる。
その他strdup()のように内部でmalloc()を使っているやつは同様。
>>769 > 仕様を読んでないアホな顛末は要らんです
>>770 何をするとリークするかを書いただけだが?
>>771 だからそんなアホなレスは要らんです、と書いたんだが?
>>738 はいはい
精神科医ってこう言う輩の相手するんだよな...
大変なお仕事だわ w
「私の書いたプログラムは絶対にメモリーリークは発生しません。バグもありません。試験は不要です」
こういうこと、一度は言ってみたい
たったこれだけでリークするコードを仕込んだことになる。
もちろん仕様書通りの動作だけど、ノウハウ集を見るまえに気づくのはわりと難しいかもね。
p = realloc(p, 1 * sizeof(int));
>>772 しかし君はアホだから丁度マッチした適切なレスではないかな。
>>775 そういった意味で realloc は若干まどろっこしいね。
失敗時は元と同じポインタを返して errno を設定してくれる方が変数のやりくりが簡単になりそう。
>>775 それでリークするかどうかはその他の部分がどう書かれているかによるのでは?
実際はmalloc失敗した時点でリークもへったくれもないと思うよ
ああ。失敗した時か。確かにリークするな。
そういう時はもう処理続行不能って事にしてexit()させてる。
>>778 realloc() が 0 を返すと p の持っていた値は失われ、free() できなくなる
ptr = malloc()
p = ptr
p = realloc(p, ...)
>>780 スレッドでの処理だとそのスレッドだけ終了させればよかったりするから、きれいに解放できないと具合が悪いな。
exit していいケースなら exit がいいと思う。
内部でメモリ確保しまくるライブラリを使う仕事に当たっちまったら、思いっきり痛い目に会えると思うよ
>>715 俺は書かないと言ったろ。理由は
>>705参照。
そして俺は最初に解法も示してる。
>>690参照。
つっても理解出来てないようだから、もう少し(非技術的な)解説をしよう。
現状、俺以外の他全員誰も褒めてないんだから、この際理由を『詳しくない』俺にわざわざ求める必要がないだろ。
しかし、何故か俺に意見を書かせようとする輩が多いだろ。お前も含めて。
それがアフィカスじみてて、結果的にスレを潰すから、俺はそれには乗らない、と言ってるんだよ。
見れば分かるとおり、スレの流れが異常だろ。
俺が何度もこのメタ議論を出している理由は、お前らゆとりが全くこの辺について無知だからだ。
お前らゆとりは、オンラインコミュニティは潰していいものだと思っている。
見方が本当に刹那的で、自分の質問に対しての答えが得られれば後はどうなってもいいと思っている。
(ただ乗り出来るし、勝手に発生するものだと思っている)
実際は、オンラインコミュニティだって、成熟するには時間も労力もかかる。
そこがどんなに(お前にとって)糞であれ、住めば都だから住人が居るわけで、そんなに簡単に潰していいものではないんだ。
ゆとりが老害老害と連呼しながらも2chにへばりついているのも、ちょっと考えればおかしいと気づけるだろ。
2chは古いし、年齢層は高い。これは事実で、実際、老害年齢層の存在確率は他のコミュニティよりも高い。
しかし、結局の所、ゆとり流では「既読疲れ」みたいなコミュニティしか形成出来なかったんだよ。これも事実だ。
だからお前らがここに文句を言いつつもへばりついているわけでさ。
それなのに、ゆとり流をここに持ち込もう、というのは全くの筋違いだ。それは2chを破壊するから止めろと言っている。
ゆとりには長期的な視野がない。2chに色々問題があるのも事実だけど、ゆとりに長期的視野と運営能力があれば、
今現在の20代は全員ゆとりなんだし、人数は揃っているのだから、
「ゆとりチャンネル」(通称ゆとりちゃん)が出来ても全くおかしくない状況だろ。
それが出来ないって事は、お前らゆとりにもかなり問題がある、ってことでさ。それは自覚した方がいい。
とはいえ、2chの問題点が目に付くのは理解出来る。
ただ、それに関して「何故そうなっているのかを理解出来ないのに文句を言っている」のが、
全く使えない意識高い系新入社員と同じ事になってる事にも気づいた方がいい。
お前らは完全に空回りしているんだよ。
ハロワも同じだろ。「何故世界中の誰も20年間それを修正しなかったのか」を理解出来ない癖に、
「俺のハロワ、凄いだろ」なんて言っちゃう辺りが痛い。
ただ、それは若さの特権だから、本当にそう思うのなら主張すればいいし、
ゴミなのを誰も褒めないんだから、ここのコミュニティもまだ正常、ってわけだ。
それで、話を戻すと、ゆとり流の無知と横暴は2chを潰すから止めろ、と言っている。
とはいえ、おそらくゆとりには悪気はない。これが話が通じない根本の原因だ。
しかし、2chにはゆとりを排除するシステム自体がなく、へばりつかれたらどうしようもない。
だから俺はゆとりを教育してやろうとしているわけでさ。2chに合う奴だけが2chに来ればいいのであってね。
笑顔で人を殺しても、殺人は殺人なんだよ。ゆとりはこれを理解出来てない。
同様に、どんなに上手に敬語を使っても、スレを毀損しているようでは駄目なんだよ。
ゆとりは乗っ取り行為が酷すぎる。しかもそれを自覚出来てないのが最悪。
お怒りは理解しますけど、長い。もっと簡潔に書こうよ
>>787 文句があるのなら、異常な流れになる前に、お前が何とかして終わらせておけ。
それも出来ず、やろうともせずに文句だけ言ってるのだから、お前も相当のゴミだぞ。
>>776 >>775だけを見て同じ方向を向く人たちには言われたくないなw
>>788 匿名掲示板なんて、誰が何書いても咎めようがないし
そういうことで腹を立てても何も得しないと思うけど
もっと大人になろうよ
>>790 効果はあるんだよ。だから書いてる。
正確に言えば、効果がある奴には効果がある、だが。
はっきり言えば、君の考え方もズレてるんだよ。
コミュニティは、オンラインであれオフラインであれ、存続する為には新人を受け入れるしかないんだよ。
だから、ゆとり世代以降を全員閉め出す、というのもまた間違いだし、
後10-15年後にはゆとりが社会の主力になるんだから、
それまでに駄目なところを鍛え直すのは上の世代の責任でもあるんだよ。
(君の考えに関係なく、俺達はゆとり世代に未来を託すしかない)
だから俺は俺なりの方法でやってる。それで成果も多少は出てる。
お前は何もしようともしてないのに文句だけ言ってるクズだよ。
ネットだから何をやってもいい、ではないんだよ。
同様に、ネットだから何もやらなくてもいい、でもない。
ネットだから咎めようがない、でもない。
まあ君には通じないとも思うけど。
有益なことなら読んでいるが
長い文章書かれても、大概の奴は読まないだろ
読まれれば効果が有るかもしれないが、
読み飛ばされても文句は言えない事は理解しないと
>>793 > 読み飛ばされても文句は言えない事は理解しないと
理解してるぞ。というか、当たり前だろ。お前はアホなのか?
まあお前も理解出来てないのだろうが、なんだかんだでみんな読んでるんだよ。
そのうち分かるようになるよ。
それ以前に、2chの『長文』ごときで無理な奴はプログラマは無理だし。
たまに上から目線で長文書くバカいるけど誰も読まないんだよな
何故かって冗長なだけで大した事書いてないから
中身のある、読む価値のあるレスなら長文でもちゃんと読むが、ID:+6TFZypL0のは斜め読みしてめんどくさいだけのやつダナーと思いながら適当に読み飛ばしてる。
>>795 そういうことにしたいのはお前が馬鹿だから。
実際は、賢い奴ほど読んでる。
正確には、賢くなる過程で大量のドキュメントを読む必要があり、結果、
賢くなった奴はおしなべて読む速度が速く、読むことに関してコストがかからないからだが。
そして、俺の意図は馬鹿にはどうせ伝わらないから、俺もそれでいいんだよ。
長文ガー、なんて奴は最初から相手にしてない。
三行で、一行で、というのもまた自由だが、
現代プログラマにドキュメントの読み込み能力がかなり必要なのも事実だし、
これは今後さらに拍車がかるのも目に見えているから、
2chの長文に手こずる程度ならマジで国語からやり直した方がいいぞ。
>>797 国語の能力に関係なく、攻撃的で、感情的で、実のない部分の比率が高い文章は誰にとっても読みにくいと思うぞ。
汚いコードを読みなれてそういうのを読むのが上手くなったからって、自分のアウトプットするコードは論理的かつ明瞭でキレイでありたいと思わない?
>>798 何が言いたいのか分からん。
その君の文章が「論理的かつ明瞭でキレイ」だとでも思っているのか?
俺は俺なりの方法で対処してる。
読むかどうかは当然読み手側が決める。それでいいという前提で書いている。
君がもっと上手く対処出来るというのなら、君がやればいいだけ。
おかしな流れにならなければ、俺がわざわざ時間をかけて長文を投下することもない。
だから、君が見事に、アホ共を捌き、流れが正常化していれば、俺が出張ることもない。
君が俺にこの手の文を投下させたくないのなら、君が実力を見せればいいだけだ。
やってから言えよ。
長文連投よりはアホがアホなこと書いてる方がマシだな。
5ちゃんで上から目線で長文書く奴の特徴は驚く程共通してるんだよな
例外無く論理的思考が欠如しているから要点をまとめる事も出来ないんだよ
>>801 馬鹿こそそういうことにしたがるのだが、
実際、必要な文章量は、認識/知識のギャップに比例するんだよ。
実例を挙げると、
>>653,679、ゴミだね、でしかない。
賢い(知識のある)奴にはこれで十分だし、
無理な奴にはグダグダ説明が必要なだけ。
そして俺はお前らがこの件(メタ議論)については無知だと見てグダグダ説明してるだけ。
そもそもお前らが賢ければこんな事にはならないし。
ただ、そういう、「この場合にはこれ」みたいな定型的な屁理屈返しはマジでゆとりに多い。
そういうのも止めた方がいいと思うぞ。誰の為にもならない。
俺も、何度もその返しは見てきた。
それで、誰も俺みたいな返しをしてこなかったから、
お前らゆとりが調子こいて「これは使える」と勘違いしているのだろうけど、
それは単に見捨てられてるだけだぞ。理解出来てないのだろうが。
>>799 >
>>798 >その君の文章が「論理的かつ明瞭でキレイ」だとでも思っているのか?
個人的には
>>798 は読みやすいんだが、ID:Av8doxl90 は非常に読みにくい
たとえば
>>797 は文脈・論理の線が、不適切な日本語を使用しているせいで滅茶苦茶だ
>>797 >実際は、賢い奴ほど読んでる。…@
>正確には、〜コストがかからないからだが。…A
この「正確には」が、読み手を混乱させるミスリード語。
「正確には」と書く以上、すでに述べた@と同格言い直し内容の後続があるかと期待すると、裏切られて、@の理由を示すAが来る。
>そして、〜伝わらないから、俺もそれでいいんだよ。
「そして」が意味不明、何と何が「そして」で続くのかさっぱりわからない。
「そして」を使うのなら、
「俺の文が、馬鹿には読むコストのかかる文章であったとしても」→「馬鹿にはどうせ俺の意図伝わらないから」→「俺はそれでもいい」…B
と、A部分のキーワード「コスト」という単語を使うことによって、AとBが意味の上でつながっていることを明示するべきだ
Bの冒頭を省くから「そして」が宙に浮く
>>799 >おかしな流れにならなければ、俺がわざわざ時間をかけて長文を投下することもない。
上で示したように、君の文章は「おかしな流れ」そのものといっていい
スレが「おかしな流れ」であるとき、それを正すのに「おかしな流れ」の文章が使えるとでも思っているのか?
>>801 >上から目線で長文書く奴の特徴
>論理的思考が欠如している
感情にまかせて思いついた単語を羅列するあまり、
前半と後半の意味の整合性がとれていなかったり、前半と後半をつなぐ接続詞が不適切であったり、で、
はっきりいって脈絡がない
書いている本人はテンポ良く文章を量産できる「頭のいい自分」に酔いしれているのだろうが、
実際には量産されているのはポンコツ文
長文をゆっくり書いていられるゆとりのある人はいいなあ
ポンコツかどうかはコード書かせれば分かるだろ。
この世界では他がポンコツでもコードが書ければ正義だ。
>>802 すまん。俺には知識もないし賢くもないので
もしもあなたさえ良ければ
>>653のゴミな点を指摘してもらえると嬉しいな。
>>806 いくらコードが書けても設計通りに書けないなら駄目じゃん
>>807 hello worldの存在意義は、
その言語に初めて触れる人に、
言語の規格にきちんと準拠して、
最小限の記述で、
きちんと動作する、
何かのプログラムを見せることだよ。
どんな設計スタイルがいいとか教えることじゃない。
hello, worldって
コンパイラをインストールした後
動作確認する為のテスト用だと思ってた
ゲーム機ハックした人が最初に実行した自作アプリがhello worldだったとかなんとか。
>>808 設計通りに書けない奴はコードが書ける奴とは言わんだろ。
>>809-810 どっちも正しい。
>>811 GBAハックした時は点を一個表示するのが最初だった。
Hello Worldは二番目。
adjtimeって何秒まで調整できるの? 2145秒?
Linuxというかglibcならmanページに書いてあるよ。
make worldでX立ち上がったときは
感動したものだ
それで思い出した
プロジェクトでのmakefile、作成が終わった時に
バナー文字で「make end!」って表示するんだけど
ある人のだけは「big cock!」に書き換えてたっけ
ここには関係者いないよね?
C言語だから、次世代言語(w)よりもコード出るかと思ったら、出ないのな。
どうでもいいけど
「w」という名前の言語があるのかと思った。割と本気で調べてしまったw
病気の話を持ち出すのは、そういう体験が豊富にあるからだろう
>>825 人物と診療科を等値比較とかおまえstd::logic_errorだな
Cでfloat型が表す最小の正の数値を求めるプログラム書いてて、
とりあえず1.175494e-38に近づけるように書いてみてるんだが
printfで値表示させながらやってみると1.175494e-38以下も表示されるのなんで?
環境はgcc5.5.0_1
とりあえず最小判定は初期値1.2e-38を0.000001e-38ずつ減らしていって、
1.175494e-38を抜けるとバカな数字が出てくると仮定してif(a / (b - c) != 1)で判定してる
int main(){
float a = 1.2e-38, b;
float c = 0.000001e-38;
while(1){
b = a;
a -= c;
printf("a=%.6e b=%.6e\n", a, b);
if(a < 0 || b < 0) break;
if((a / (b - c) != 1.0)) break;
}
printf("a=%.8e b=%.8e\n", a, b);
if(b < 1.175494e-38) printf("b is not min value\n");
}
>>827 精神科医のタイポの指摘しかできなくて悔しいね w
>>829 あ、おまえ間違えたの? アホとヴァカしかやらない間違いだなw
>>828 なんかいろいろ勘違いしてないか
>1.175494e-38を抜けるとバカな数字が出てくると仮定して
この仮定がはずれてるから無限ループしてんじゃん
>>833 int型だとオーバーフローすると馬鹿な数字がでてくるからそう仮定したんだが違うのか
率直に聞くんだけど、この場合どうすればいいの?
>>834 バカな数字とかいい加減な理解をしないで、ちゃんとした仕様を調べてみなよ。例えばwikipedia辺りで算術オーバーフローの項目見て全部読んで、分からない語とか関連する語もちゃんと調べるとか。
>>833 >>835 無限ループはしないけどどんどん値は減っていく。
理由わかるの?828じゃないけど俺も知りたい。
>>837 int型で似たようなこと(最大の正の数値を求める)やろうとしたら、バカみたいな数字が出たってだけだよ
>>828 非正規化数(denormal)でぐぐれ
>>843 意味のわからん解釈で勝ち誇るとか低能の定番乙 w
>>845 意味わからんのか
よほど高力価のトランキライザーを打たれているようだな
もう末期でオピオイドとかか?
お大事に
>>828ですが、参考書やらをみてアンダーフロー・正規化についてしっかり理解したところ、解決しました。
要は、float型のビット表現の仮数部が 0.(仮数部) ではなく 1.(仮数部) で表現されてるから、
その意味では
0|00000001|00000000000000000000000
が最小の正数になるけど、仮数部を 0.(仮数部) と表現しても計算できないことはないから、
0|00000000|10000000000000000000000
もちゃんと表示される、ということだけど、
これ以降ずっと計算していくといずれ
0|00000000|00000000000000000000000
となるから、150回目くらいでアンダーフローが起こる、ということらしい。
>>835と
>>842ありがとうございました。
>>847 >>845 アホとヴァカとしか言えなくて悔しいね w
>>849 そうか、847にアホとヴァカって書いてあるのか
実際には、そう言ってるのはおまえだけなんだが
確かに悔しそうに勝ち誇っているシュールな姿だねw
>>850 > そうか、847にアホとヴァカって書いてあるのか
> 実際には、そう言ってるのはおまえだけなんだが
ヴァカで検索
>>831 > あ、おまえ間違えたの? アホとヴァカしかやらない間違いだなw
>>840 > アホw ヴァカwww
>>843 > アホとヴァカを認めやがったw
849-850 は指摘なので省略
> 自分にお前だけとかかなりシュールな姿だねw
C言語でLinuxのdmesgやffmpegのログのような着色された分かり易いログ出力ができるライブラリってありますか?
[YYYY-MM-DD hh:mm:ss.ss] INFO: creating some file...
のような形式がいいんですけど、Cだと自作するしかないですかね?
>>854 標準ライブラリにはない
git漁ればあるはず
でもそのぐらいなら自分でチョロっと書けば終わる
色だけだったら制御コード挟むだけでかなり直接的な操作だから、ライブラリ要らんと思うよ
>>851 ヴァカと書いてあるのを血眼で探したのか
ご苦労だったな
で、誰か「自分にお前だけ(ry」とかテレパシーで話しかけてきたのか
なるほど精神科の医者じゃなく患者だな
精神分裂病の陽性症状で幻聴がひどいようだな
>>854 サンプル書いてやったぞ
#include <stdio.h>
#include <time.h>
#define D(fmt, ...) \
do { \
struct timespec _ts_; \
struct tm _tm_; \
char _tt_[128] = {0}; \
clock_gettime(CLOCK_REALTIME, &_ts_); \
localtime_r(&_ts_.tv_sec, &_tm_); \
strftime(_tt_, 128, "%H:%M:%S", &_tm_); \
fprintf(stdout, "\033[33m%s.%lu %s:%d %s " fmt "\033[0m\n", \
_tt_, _ts_.tv_nsec, __FILE__, __LINE__, __func__, ##__VA_ARGS__); \
} while (0);
末尾のセミコロンがなければ意味あるけど、
セミコロンのせいで無意味になってるね。
カラーコードをハードコーディングかぁ
やりますねぇ・・・
>>859 ありがとうございます!
一点,おこがましい指摘なのですがfprintfの出力先はstderrのほうがいいのではないかと思います。
ログ出力はコマンドの出力とは別個にするべきなので。
>>862 例えば改行を\x0aで固定するのは良くない方法であり、\nにすべきですが(これだとWindows向けにビルドしてやれば\0x0d\0x0aが出力されるようになる)
着色に関するエスエープシーケンスを固定するのは別に大丈夫だと思います。
ECMA-48/8.3.117などで標準化されてますし。
>>865 ああ
「\e[33m」という記法それ自体ではなく
「33」という文字列を,例えばYELLOWマクロにする,というような意味だったんですね。
まあ確かにそうかも知れないです。
>>867 説明のための例だからそういう定義が分かりやすいとして、
>>866 こういうのを定義するときは、手段じゃなくて目的で定義する方がいいんじゃないかな。
ソース位置の強調をするために STYLE_LINE、タイムスタンプを強調するために STYLE_TIME、プロセスIDを強調するために STYLE_PID、みたいな。
それらを定義するときに YELLOW とか RED とか使う感じ。
#define STYLE_LINE(FMT) (ANSI_COLOR_YELLOW FMT ANSI_COLOR_RESET)
みたいにして、
fprintf(stdout, STYLE_TIME("%s.%lu") " " STYLE_LINE("%s:%d") " " STYLE_MSG(fmt) "¥n",
とか。
>>861 ;はミスだわ
>>863 サンプルなのでお好きに
>>868 好みかもしれんが、一行の中で色変えるとか見づらくないか?
そのフォーマットではファイル出力したくなくなるし
俺が色使うなら #define D(type, fmt, ...) でタイプ指定して
fprintf(stdout, COLOR(type) ... COLOR_END "\n",
とかで色変えるぐらいかな
>>869 例だから派手にしたけど、言いたいのは目的にちなんだ定義名にした方がいいってこと。
ログレベル毎に色を変えるなら、STYLE_ERROR、STYLE_WARN、STYLE_INFO とかさ。
正論と同じであまり振りかざされても実務では面倒なだけ
>>868とか正直ウザって思うわ
ていうかログのフォーマットってCでは標準化されていないのね、SUS含め。
Javaのlog4jやPythonのloggerみたいなものがあれば 一番嬉しいんだけどね
C初心者です、よろしくお願いします
ubuntuのvimでしこしこ書いてgccでコンパイルしています
CでIDEを使ってみたいのですがオススメありましたら教えてください
仕事ではJavaでEclipseを使ってるのですがCで使ってみたらいまいちピンと来ませんでした
やはり皆さんVisualStadioとかVSCodeあたりでしょうか?
>>874 ないけどUNIXで昔からsyslog使われてた。というかそれがあったせいで他のログ出力ライブラリが広まらなかったのかも知れない。
ログ出力も奥が深いよな。
大量かつ高速が条件だとなかなか悩む
syslogは日付がISOに従ってないのがちょっと嫌だな。
[YYYY-MM-DDThh-mm-ss,ssZ] LOGLEVEL: some messages.
こんな感じがいい
>>878 大量⇒高速に処理が必要だから、その条件は大体セットだろ
それにプログラムが異常終了してもログが欠落しないとかの条件がつくと難易度が更に上がる
うーん。素人考えなんだけどfprintf()関数を呼び出したり,その中で__FILE__マクロ変数を展開したりするのって
そんなにコスト掛かる動作じゃないよね。
いくら大量の処理とは言え,ログを出力しただけで影響がでるような厳しい環境ってそうなくない?
そしてそもそもそんな環境でログ処理ではないメインの処理って動くの?
>>884 マルチプロセスやマルチスレッドだったりすれば排他も必要だし、fprintf 使っただけだとプロセスの突然死なんかではバッファがフラッシュされず失われ、一番欲しい落ちる寸前の情報が欠けかねない。
小まめにフラッシュしたらそれはそれで性能の問題が出る。
奥が深いと思うよ。
>>870 ああ、過剰な例だったか
>>871 あの例は抽象化ではないけどな
まあ例だから深くは言うまい
>>884 どの程度の性能を求めてるか次第だと思うよ
時刻取得でも clock_gettime と gettimeofday でうるさく言う人もいるしね
トレースログみたいに高速かつ大容量を考えるなら
ログがN件入るバッファを複数持っておいて
情報は基本バイナリで登録、ローテート時にファイル書き出し、
別途パーサーを作る、とかかな
まあそこまでする必要のあるソフトなんて稀だろうけど
ポインタをややこしくしてるのは
int* a;
の a がポインタ変数で
a[10]
という配列がある時、a と書くだけで配列の先頭アドレスの別の書き方として許されてるがいけないんじゃないのかな?って思ったんだけど合ってる?
配列の先頭アドレスは常に&a[0]って書くようにするようにすればポインタのごちゃごちゃって解消されない?
Cだったら配列なんてものがあると思わん方がいいかもね
入門書的にはポインタより配列の紹介が先に書いてあったりするが、確かに問題はある。
>>888 あと、p[i] も禁止して、*(p+i) を強制しないとだめ。
>>888 そのへんはシンタックスシュガーというよりは
たまたま結果的に同じものを指している 程度だし
原理原則を省かず丁寧に覚えていくしかないのでは
違う
違うナァ
機械語→BASICのころには
「変数って何だ?!!」として変数なる概念をなかなか理解できなかったやつがいた……
と言う話を聞いてる
今の初心者の一部もなじめないヤツが一定数いる
言ってしまえばC言語は「変数指向」のプログラミング言語だ
オブジェクト指向や関数型に並び立つような、な
気付いてないが現代プログラミング言語は「変数指向」で出来てる
そしてどんな思想であろうとどんだけ説明してもその概念の片鱗すら理解出来ないヤツはいる
なので「変数」概念の理解に原理原則なんて存在しない
一発で理解出来るか素直に受け入れるかのどちらかしかない
それ以上説明しても意味が無い、という人物は少数だがいる
これはしょうがない
なんかの本に
int *a;
と宣言してあったら、式の中で
*a
と書かれたものが整数であると的確に説明してあった。
>>893 それが分かりやすいかはちょっと微妙じゃね。
int i; ならその領域は確保されてるけど、int *a; と宣言した *a は型としては i と同じだけどそのままで i と同じように使えるわけじゃないし。
ポインタで迷うレベルに通じる話じゃなさそうだし、これが通じるならポインタで迷ってないんじゃね。
>>892 マシン語でもレジスタが変数みたいなもんだろ
これを実行するときに、argcに3が入っているとsegmentation faultとなってしまうのですがなぜだかわかりますか?
OSはopensuseでコンパイラはccです
#include <stdio.h>
#include <string.h>
int main(int argc,char *argv[])
{
int cmp=0;
char *s1=argv[1],*s2=argv[2];
cmp=strcmp(s1,s2);
if(argc!=3){
fprintf(stderr,"usage:%s[string1][string2]\n",argv[0]);
return -1;
}
if(cmp<0){
printf("%d : %s\n",strlen(s2),argv[2]);
}
else{
printf("%d : %s\n",strlen(s1),argv[1]);
}
return 0;
}
>>898 argc調べる前にstrcmp()するのは変だろう。
>>899 それを直したらsegmentation faultしなくなったんですけど、理由が知りたくて…
>>901 たとえばargv[2]が空だったらstrcmpの引数は何になるんだという
>>902 argc が 3 なら argv[2] は何か入ってるだろ
どうでもいいけどargvが3じゃなきゃいけないのにそのusageはどうよ
>>902 なるほどです
理解しました
>>904 これではよくないんですか?
>>901 引数がなかったり一つだったりした時に先に無条件にstrcmp()をしてしまうと両方または一方が不定値やNULLになるので落ちたり変な動きになったりする。
>>907 え、その問題はもう直してあって、
>>898 は直す前のコードで argc が 3 だと落ちたけどなんで?って話なんだよね?
>>908 すみません間違いました
3以外が入ってるときです
main(void)の場合もメモリ上のどこかにargvが入ってるだろうか?
>>905 [hoge]はhogeが省略可能って表現
あとスペースちゃんと入れろよ
みんな知ってるかもしれないが
[--foo]で--fooオプションが省略可能だということはかなり広範な決まりで,
POSIXに始まりGNUプロジェクトやPythonのインターフェース規格でも取り入れられてる。
>>910 そりゃいるだろうよ、と思って確認してみた
ubuntuだと環境変数の近くにいるね
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char *c = getenv("PATH");
while (--c != NULL)
if (!strcmp(c, "hoge")) {
printf("%s\n", c);
while (++c != NULL)
if (!strcmp(c, "foo")) {
printf("%s\n", c);
return 0;
}
return 0;
}
return 0;
}
$ ./a.out hoge foo
hoge
foo
>>915 POSIXに始まりってのは歴史的な話じゃなくて規約的な話だったか
でもここまで規約が決まってたのは知らんかったわ
>>911 そういう意味があるんですね
ありがとうございます
>>892 違うぞ。
その世代(ベーマガ世代)で変数が理解出来なかったのは、数学的素養がなかったからだ。
数学で「変数」が導入されるのは「方程式」からで、それ以前の小学校の算数は全部「定数」で出来ているから、
その世代の『小学生』はそこに戸惑っただけ。
機械語/BASICとかは関係ない。
高一で物理を始めると、三角関数が出てきて戸惑うようなもの。
学校によっては高二から始めるらしいが、その場合は戸惑うことはないだろ。
或いはアフィン変換も同じ。
あれも数学で回転行列を習った後なら容易いが、
『小学生プログラマ』にやらせようと思ったら、まず座標を教えて、その後に…と色々必要だろ。
数学的素養がないと、プログラミングは理解出来ないんだよ。
小学校教育に取り入れた馬鹿共は、プログラミングが出来ないから、それが分からないだけ。
○○が分からない、と言う奴は大概、数学の素養がないか、そもそも全てを『暗記』で済ませてきたタイプだ。
(世の中大概それでどうとでもなるのも事実ではあるが、)それではどうあがいてもプログラミングは上達しない。
頭を切り換えて、全てを『理解』する癖を付けることだね。そしてまず数学を勉強すべきだ。
そうしないとただのコピペ(写経)マンになってしまう。
(はっきり言って昔のベーマガ世代も実際やっていたのは写経でしかないし)
色々理解したら、なるほどCは文法的にも構造的にも美しく出来ているし、
色々無駄がないからこそ、いまだに現役で使われ続けていることが理解出来るようになる。
ただし、分かりやすいわけではないので、俺は初心者はCから始めるべきではないと思うがな。
>>922 中学の授業では便宜上は今まで変数を習ったことの無い中学なりたてホヤホヤのガキに変数を教えるんだよな?
なのになんでそれで新中学一年生は変数を理解出来るんだ?
素養が無いのにも関わらず変数を授業で教えると理解できるんだぞ?
不思議じゃないか?
ベーマガのゲーム入力して
兄「ここの数字増やすと自機数が増えるんだよ」
自分「へぇ」
兄「ここの P=P-1を消すと死んでも自機数減らないんだよ」
自分「へぇ」
当時小学3年ごろ。
これで変数と言うのを理解したわ。
どういう順番でも抽象的な理解はできると思うよ。本当に「理解」なのかわからんけど。
でも数学が先じゃないと時間の無駄という気はする。
線形代数はプログラミングと同時にやってもいいと思うわ。紙の上の操作はちょっとつまらん
線形代数とプログラミングってなんの関係があるん?
最近、プログラミング始めたからよくわからんのよな
>P=P-1
プログラム上と代数学上の記法の違い、最初面食らわなかったか?
>>923 変数にしろ関数にしろ教え方がアホすぎて全然理解できてなかったわ
単に計算できるだけだった
後にプログラミングやるようになって何で学校の数学ではあんな馬鹿な教え方をされたんだろうかと思ったわ
やねうらおとか小学生の時にはもう大学の数学をやっていたというが・・・冗談なのか本当なのかわからんがとんでもねぇプログラマなのは確かだからな・・・
>>923 だからお前は猿のままなんだな、納得した
P=P-1みたいなのが解らない人は関数型言語に行けば良いんじゃ無いかな。
代数学に比較的近い。
>>930 プログラミングに必ずしも数学が得意で有る必要は無いとは言われてるけど、数学得意な人がプログラミング出来るようになる事が多い気はする。
どちらも例外はあるけれども。
少なくともプログラミング関係の専門書って大学数学前提が多い。
前提じゃ無いのはわざわざ高校数学で出来るとか書いてるし。
1〜12月を入力し、入力した月の日数を表示する。
これを論理演算子で表示しろという。
else if( month == 3)
{ printf("3月は31日です\n")}
というのを作ったが不可。
論理演算子を使っていないからという。
論理演算子をどう使えばいいんですか。
>>936 month == 3 && printf("3月は31日です\n");
とか?w
>>936 m を月としたら
d = (15657907 >> (m - 1) * 2) & 3 | 28;
とか?
>>940 それはビット演算子、そして+、あと普通は0x*****で書く
>>941 あぁ、そうか。
てことは単純に 30日になるもの 31になるものを || でまとめろって話か。
>>942 まあ普通はな。
ただそれ以前に、if文11個連ねて書くよりは…のはずだから、
普通は正しく動けばまずはよしで、それより断然いい書き方があるよね、となる。
いずれにしても先生に聞け、でしかないが。
第三回バーチャルYouTuber人気投票リベンジ募集中(全287名、2018年10月27日〜)
あなたの好きなVtuberは?(一人十票)
https://script.google.com/macros/s/AKfycbzW_Er5wP6kI0ZNcmcZVA4UdlXPiernQqL4xG1dVv146T8LwGKZ/exec ・前回(2018/8/22)は不正投票が行われた為、投票を途中で中止させていただきました。大変申し訳ありませんでした。
・Googleフォームは標準仕様では不正投票が可能な為、改造して対策を行いました。
・2018/10/27時点でチャンネル登録数10,000人以上のVtuberを対象としています。
・一つのチャンネルでVtuberが複数人いる場合は、それぞれ分けています。
・一人十票です。(全287名の中からお好きなVtuber10名を選んでください。)
・このフォームに投票するにはグーグルアカウントでログインする必要はありません。
・並び順は前回の得票数の高い順と新人は登録者数の多い順に並んでいます。
・今回も1,000人の方が投票するまで継続します。
なお投票結果はスプレッドシートにリアルタイムで表示されるようにしました。
また【概要】と【詳細】でシートを分けております。
https://docs.google.com/spreadsheets/d/1qvhqRdbbOFGQ2veqrnQmaAXIA79xTAANKUKa3HEUUC0 ▽過去の投票結果はこちら
第二回バーチャルYouTuber人気投票結果(2018年6月5日〜8月6日、全投票数1,000票)(スプレッドシート)
https://docs.google.com/spreadsheets/d/1HqVp41DzLXPSuarWKkqNFZRyL20-nkMF5O5kkeEmqnA 第一回バーチャルYouTuber人気投票結果(2018年5月7日〜5月30日、全投票数1,000票)(スプレッドシート)
https://docs.google.com/spreadsheets/d/1uaKoB3pJQHgC9VEkvg74v9OaSNW3Zvccr91mPN1lt5k tyjty
>>943 …お前の中ではif文で書いて当然の処理なのか
>>931 中学生にちょっと教えるだけで変数を理解するのは
大抵の人間には「変数」を理解する資質が生まれながらに備わってるからさ
要するに生得論だよ
論理演算子なんて要求がなければ、配列作ってテーブル参照にしてしまう
>>945 普通は948の通りだろ。
そこを論理演算子なのだから、論理演算子の練習だろ。
超初心者だってことだよ。
>>946 それだとお前が今現在も猿と同程度なのと矛盾するだろ
>>936 m を月の数として
printf("%d月は%d日です。\n", m, m == 2 ? 28 : (30 + ((m & 1) ^ (m >= 8 ? 1 : 0))));
なんてのはどうかな。年がわからないので2月は28日固定だが。
バグの温床になりそうなので普通はこんな複雑なの書かないが。
書かないのはバグの温床だからじゃなくて
他人に意図が伝わらないオナニーに過ぎないからだぞ
>>951 お前ら初心者にも分かる言い方を思いついた。
・コードからお題に戻せるコードを書け
なんだよ。
初心者は「お題○○を実現するコードは?」ばかりやってるから、「お題→コード」の変換ばかり考えるけど、
実際に重要なのは逆で、「コード→お題」の変換なんだよ。
今回の例で言うと、お題は
・月を与えて日数を得る関数
だが、これが重要なのではなくて、
・この関数は、月を与えたら日数が得られる
とコードからお題に『逆変換』出来ることが重要なのであって。
それで行くとクイックソートとか最早ムリぽ。
コメント使わ無いのかな。。。
他にも命名規則とか、そう言うので推測し易くしてるもんでしょ。
理想だけじゃ何も書けなくなる。
>>955 コメント自体が既に次善策なんだよ。
可能であれば、コード見たら分かることを目指すべき。
クイックソートが意味不明なコードだとも思わないけど、
あの手の「末端の」関数は適切な名前を付ければそれで問題なくなる。
つまり、sort()なら、「ソートする」と分かり、使う分に支障はないだろ。
数学関数の sin() とかも、実際の中身なんて気にしてないだろ。これと同じ。
問題は、
int d0 = (15657907 >> (m - 1) * 2) & 3 | 28; // 940
int d1 = m == 2 ? 28 : (30 + ((m & 1) ^ (m >= 8 ? 1 : 0))); // 951
では、ぱっと見意味不明だろ。
だから最低限、「関数として切り出して適切な名前を付ける」か、「コメントを付ける」かが必要になる。
これが上記みたいにベタでコメント無しで書かれてたら、殺すぞテメー、になるって話さ。
>>958 それはいつぞやのコードだろ。
末端の関数だから、適切な名前を付けた関数にすれば問題ない。
俺なら count_1_bits か get_nof_1_bits とかにする。
勿論そのコードがベタでコメント無しで書かれてたらアウトだ。
あと、戻り値は int にしておけ。
>>961 // count nof 1 bits
>>954 かけるようになるのも大事だけど、それよりもまず読めるようになれってこと?
>>963 1年後に読んでも分かるコードを書け、ということ。
// なぜこのコードが動いているのかわからない
// 以下、あるはずのないコード群でお送りします。
/* 俺のせいじゃない */
//ここに来ることは絶対にない
もうちょっと読み物風に書いて行けば最後まで呼んでくれるかも知れない
(つづく)なんて書くと、続編への熱いメッセージをもらえるかも
逆にちょっと高度になるとみんなダンマリ。
最近久しぶりに来たけど、昔のCスレはこんなんじゃなかった。。。
じゃあまた10年後にいらっしゃるのをお待ちしてます
もっと悪くなってるわw
正直、ここの住民がどの程度まで作れるのか分からん。
以前のお題は無視されたから、それ以下だとは思うが。。。
私もたいして書けるわけでもないのに。
(むしろ以前の方が書き込み難かった)
>>970 ここ数ヶ月、何故か超初心者が沸いてる。
C言語相談室(上級者専用)
http://2chb.net/r/tech/1519998483/ C言語上級者スレ
http://2chb.net/r/tech/1519750371/ こういうスレもあるし、そちらを覗いてみたら?
私は見てないので、内容は保証出来ませんが
>>975 そっちもチェックはしてる。(ほとんど更新されないが)
こっちでも入門書程度のコードは割と出てたと思うんだが、最近全然出ない。
>>977 それもチェックしてたわ。
済まんかったね。
うーん。。。
なんて言うのかな。。。
こう言うの作ってて、ここが上手くいかないみたいな質問自体が来ないのかな。
最近だとpythonスレとかが来てる方か。
うん分かった。
もうロムるわ。
>>970 高度な話がしたければすればいいだろう
みんなダンマリなんて嘘こいてないで
てめーがコード1つ示さない低劣野郎なくせに
スッパマンみたいな威張り方してんじゃねえよbogus
お題なんてなんでもいいじゃん。
>>936 これだっていい。
最短、最速、なんでもいいからコードでアピールしてみたら。
とっくに結論出てる事にすら気づいてない知能の奴が高度な話題とか何とか言ってるのかw
>>978 >>707本人か?
あれは質問スレでお題なんてそもそもスレ違いであること、お題としても興味をそそられないつまらない内容であること、1日レスが付かなかった程度でその後の痛々しい反応など、スルーされる要素てんこ盛りで当然の結果だろう。
>>984 >1日レスが付かなかった程度でその後の痛々しい反応
こういうのは、何度となくやって、手ひどく罵倒されでもしないと、なかなか身につきませんね
スルー力も大事だし、スルーされることに耐える能力も必要です…
やはりそうだよね
どこが問題なのか、よく分からないでいた
あとちょっとで終わるから、埋め草
設問が今一分からないんだよね
合計を求める←これは問題の範囲にはないよね
1から順に足していって140まで、
その答えを順に表示しろって事かな?まさかね
合計値を文字列に変換する←何進数か分からない
最後に4桁ってあるから多分10進数でいいんだろうけど
16進数なのかもしれない
(4〜7行目は意味が不明なので読み飛ばした)
保存場所の間違いって何?
客からこんな依頼きたら、頭が変になりそうw
除算とその余りで桁を分離できる大発見をしたので、それを解説するためのお題を出しただけでしょ。
情報処理勉強してる学生かな。
プログラム的に役に立つ発見ができて良かったじゃない。
おれも中学生くらいのときにじゃんけんの勝ち負け判定は剰余を使うとシンプルに書ける大発見をして心踊ったもんだ。
>>984 本人よ〜。
だから直ぐ下でロムるって書いた。
じゃあの。
高度過ぎもしない(低度過ぎる上に日本語がおかしい)
>>992 自分でもそう思ってるのにコードが出てこなくて失望した。
スレ違いにしても誰かしら書くと思ったのに。
まあいいよ。
もうこのスレに期待しない。
バイバイ。
-curl
lud20250210005924ncaこのスレへの固定リンク: http://5chb.net/r/tech/1537347410/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。
TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像
↓「C言語なら俺に聞け 148 ->画像>12枚 」を見た人も見ています:
・C言語なら俺に聞け
・C言語なら俺に聞け 139
・C言語なら俺に聞け 156
・C言語なら俺に聞け 160
・C言語なら俺に聞け 144
・C言語なら俺に聞け 151
・C言語なら俺に聞け 152
・C言語なら俺に聞け 145
・C言語なら俺に聞け 143
・C言語なら俺に聞け 149
・C言語なら俺に聞け 150
・C言語なら俺に聞け 163 (621)
・●●●●TCL/TKなら俺に聞け 4●●●●
・ゲームプログラムなら俺に聞け32
・自分中2だけど、今から言語勉強すれば稼げるかな
・SQLなら俺に訊け
・何でお前らは完璧な言語作んないの?
・ぶっちゃけ始めるのにいい言語て何 part8
・ぶっちゃけ始めるのにいい言語て何 part4
・ぶっちゃけ始めるのにいい言語て何 part6
・ぶっちゃけ始めるのにいい言語て何 part7
・もしプログラミングに適した自然言語を作るとしたら
・0からの、超初心者C言語相談室
・おまいの使ってる言語、人気ねぇのなw
・PCソフト開発で一番便利な言語教えて
・C++諦めたから他のオススメの言語教えて!
・1行ずつC言語を書いてくスレ(目標なし)
・学習サイトで言語習った後って何したらいいの?
・C++11が動的言語よりも開発効率が良くなってる…
・最長不倒関数■C言語でmain関数に全コードを入れる
・COBOLやPythonのように制限が多い言語の方が良い
・【悲報】Pascal言語の開発者はパスカルじゃなかった
・C言語の設計ミスった危険な関数トップ10決めようぜ
・小6におすすめな言語 (540)
・c言語的にjavaを教えて (55)
・【悲報】Ada言語の開発者はエイダじゃなかった (26)
・C言語を学びたいんやが、まず何からやればいい? (43)
・【超高速】C/C++に代わる低級言語を開発したい 8 (325)
・この先き主流となる言語
・集合論に基づいた言語を作りたい
・こんなプログラミング言語は嫌だ!
・そんなにRust,Rust言うならゲームエンジンでも
・お前らプログラミング言語どうやって覚えたんや?
・静的型付け言語の潜在開発生産性は今の100倍 ×5
・将来性ないプログラミング言語。Delphi含まれず安心
・C言語の第一歩
・C言語で関数を書いていくスレ
・C言語でRADって作れるんでしょうか?
・排斥すべきゴミ言語 C++ Rust 他
・プログラミング言語 Scala 12冊目
・自称次世代言語議論スレ[PHP PHP PHP]
・ラズパイ4でc言語開発する方法教えてくれ
・C言語でテトリス作れる人来て!👾
・ChatGPTすごいな。これなら料理下手な俺でも
・[c言語]以下のプログラムの解説お願いします。
・次世代言語13 COBOL Java PHP VBA Ruby
・プログラミング言語バトルロワイヤル
・米国国防省の標準高等言語エイダ(Ada)を語れ!
・次世代言語14 Elixir Crystal Julia Rust Swift
・次世代言語15 Go Rust Swift Kotlin TypeScript
10:59:24 up 27 days, 12:02, 0 users, load average: 103.33, 98.45, 91.35
in 1.8511130809784 sec
@0.033963918685913@0b7 on 021000
|