C言語なら俺に聞け 151

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ cf8f-fy95)
垢版 |
2019/04/02(火) 11:23:37.62ID:SQXqRaAc0
!extend:checked:vvvvv:1000:512
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
274デフォルトの名無しさん (トンモー MM79-LqAG)
垢版 |
2019/04/29(月) 22:19:37.72ID:dHR449jcM
Cっていいよね。
シンプルで全て見えてる。
キチンと組めば性能も素晴らしく、
ソースも分かりやすい。

ま、馬鹿が使うと酷いことになるから
馬鹿には触らせたくない!

馬鹿にはJavaがお似合いw
2019/04/29(月) 22:40:41.10ID:atpu4K080
>>273
そもそもtioが未初期化
33行目にtcgetattr(fd, &tio)とかを入れて
2019/04/29(月) 22:45:19.28ID:InnqLHhB0
Cのスレで用途も構造も違うJavaとか出してくるあたり相当頭悪いんだと思った
277デフォルトの名無しさん (トンモー MM79-LqAG)
垢版 |
2019/04/29(月) 23:27:52.24ID:dHR449jcM
ああ
Javaわかんね―馬鹿か

Cしかわからん馬鹿院生って感じかな(笑)
2019/04/30(火) 01:53:25.72ID:AMBMNz/t0
なんでスレがカテゴライズされているかも理解出来ない
2019/04/30(火) 08:20:44.73ID:QYNECMA50
Cが分からないってやつはコンピュータの基礎の基礎が理解できてない。
いきなりプログラミングから学ぶからそうなる。
280本田宗一郎 (トンモー MM79-LqAG)
垢版 |
2019/04/30(火) 09:04:16.26ID:UDRlTLQRM
Cしかできない奴はCを評価できない

そんな簡単なこともわからない

院生くずれのバカニート(笑)
2019/04/30(火) 10:31:21.97ID:FQfKtoeU0
いや評価はできる

この世の森羅万象すべてを知り尽くしているやつなんかいない
みんなそれぞれ何らかの「井の中」にいる
そこからCならCがどう見えるかを述べているのを
聞いた者がどう捉えるかの問題だ

自分の「井の中」のほうが相手より大きそうだからって
天狗になるやつこそ成長の止まった将来性のないやつだ
282デフォルトの名無しさん (トンモー MM79-LqAG)
垢版 |
2019/04/30(火) 11:10:18.88ID:UDRlTLQRM
できね―よ馬鹿
283デフォルトの名無しさん (ワッチョイ 1b8c-B2tE)
垢版 |
2019/04/30(火) 11:15:16.30ID:/zD1IEOE0
OSなしで書ける言語はC?
2019/04/30(火) 11:39:21.09ID:iYYZTFZo0
>>283
C といえども OS なしではなにもできません
2019/04/30(火) 11:40:42.65ID:FQfKtoeU0
フリースタンディング環境のことだろ
ソース入力やビルドをOSなしでって意味ではなく
2019/04/30(火) 11:43:53.69ID:vCAloE34a
ハンドコンパイル・アセンブルするってことだろう
2019/04/30(火) 11:45:02.69ID:iYYZTFZo0
>>285
C だけではなにも出来ないのではないでしょうか、最低限アセンブラの部分が数%はあるでしょう?
2019/04/30(火) 12:02:29.80ID:FWtA2SNeM
クロス開発ではホスト環境とターゲットは別
小規模組込み開発ではターゲットにはOSと呼べるものが存在しない場合もある
2019/04/30(火) 12:17:23.14ID:QYNECMA50
>>287
CPUによってはリセットエントリから100%C言語だけで記述できるよ。
2019/04/30(火) 12:28:19.12ID:AMBMNz/t0
書くことはできる
紙と鉛筆さえあれば
291デフォルトの名無しさん (ワッチョイ 1dd2-DhOR)
垢版 |
2019/04/30(火) 13:23:52.39ID:JZ+qVZdl0
OS無しで動くプログラムが書ける言語はC?
ってことだろうな
2019/04/30(火) 13:41:26.32ID:iYYZTFZo0
>>289
へえ!そうなんですか!多倍長演算をCで書くときキャリーフラグはどう扱うのですか?
2019/04/30(火) 14:20:29.60ID:Cm5pFeJF0
>>292
15bit+キャリーみたいな形で扱えばいいだけ
2019/04/30(火) 15:00:43.85ID:iYYZTFZo0
>>293
それは私もやりましたが、悲惨なコーディングになりました、キャリーを使えるのにそれを無視してCですべて記述するとか、ありえない選択だと考えています
https://mevius.5ch.net/test/read.cgi/tech/1434079972/51
2019/04/30(火) 15:58:16.84ID:QYNECMA50
>>294
そりゃビットサーチとか場合によってはCPUの機能を使ったほうが速かったりシンプルに書けるケースもあるけど、それはそれでまた別の話。
それを以てC言語で書けないとは言えないよ。
2019/04/30(火) 16:35:39.02ID:iYYZTFZo0
>>295
まあ java だけで「やってしまった」OSというのもありますから…多分 JNI を使っているとは思いますけど…
C 言語だけで全部やってしまう、というのはありえなく、例外 exception の実装に有用な setjump(), longjump() ですら、CPU を叩かずにはいられない内容ですから、世に蔓延する「C言語マンセー」は、その機会があればなんとしても叩かずにはいられないのです
2019/04/30(火) 17:01:36.40ID:QYNECMA50
>>296
もしかしたら貴方と私は違う思想の元で仕事してるのかも。
JNIはAndroidぐらいでしか使ってない、てかそもそもJavaを使う機会が少ないような業界の人です。
なんちゃってtry〜catchのためのsetjmp系はそれでもやっぱりアセンブラを使わないC言語の範疇内な訳であって、やっぱりC言語否定の理由にはならんとです。
唯一、OSを記述する際のタスクプリエンプトだけはC言語だけで記述できず悪魔のスタック操作とコンテキスト切り替えが必要なのでアセンブラが必須だとは思いますが。
2019/04/30(火) 17:54:15.66ID:Cm5pFeJF0
>>296
別にsetjmp, longjmpなくてもプログラムは組めるし
Memory Mapped I/Oならデバイス制御もC言語だけで組めるだろ
2019/04/30(火) 18:21:31.59ID:hc3e5D+80
プログラミング素人です。
scanf関数について質問なのですが、
char str[10];
for(i=0;i<5;i++){
scanf(“%c”,str[i]);
}
として、「abcd」と入力された場合、
str[0]=‘a’
str[1]=‘b’
str[2]=‘c’
str[3]=‘d’
str[4]=‘¥’
str[5]=‘0’
となるのでしょうか?
str配列の0~3番目にa~dが格納されていることはprintfでわかりましたが、4以降は何が格納されているのか自分で調べる方法がわかりません…
2019/04/30(火) 18:41:15.22ID:lzNlO/OB0
>>299
C/C++では文字は整数なんだ。整数として出力して、アスキー表を参照すれば、文字がわかるはず。
2019/04/30(火) 18:44:59.71ID:iYYZTFZo0
>>299
鋭い質問ですね…手元でいろいろ試していますが、今ひとつ事情がつかめないでいます
https://ideone.com/l3ZslT

ideone と x64/gcc/cygwin でも結果が変わってしまいます…
2019/04/30(火) 18:51:26.51ID:lzNlO/OB0
str[5]以降は決まってないから調べてもあまり意味がない。多分ゴミデータ。
2019/04/30(火) 19:09:43.34ID:QYNECMA50
>>299
str[4]='¥0'
それ以降はゴミ
2019/04/30(火) 19:30:23.83ID:CZMZfk1L0
>>303
str[4]は'\n'じゃね?
2019/04/30(火) 19:42:59.90ID:ZdpyyptHa
まあ改行入れたら改行ですね
2019/05/01(水) 00:16:42.15ID:pM2+GGDK0
自作関数内のエラー時にerrnoに値をセットするのってマナー違反ですか?
2019/05/01(水) 00:27:56.20ID:Lv+8X8zta
入れられるもんなら入れてみろ
2019/05/01(水) 01:10:53.33ID:dGckAS/m0
信長 入れられないなら殺してしまえそのプロセス
秀吉 入れられるまで仕様変更を待とう
家康 俺が直してやる!
2019/05/01(水) 02:42:38.43ID:LlVhs4fx0
https://ideone.com/JeNdi9
こういうエラー処理を書きたいんですが
2019/05/01(水) 13:05:10.79ID:Vm5gAWGsa
>>305
str[4]が改行コードの\nだとして
str[5]は\0にはならないの?
2019/05/01(水) 14:38:29.13ID:pGaFGHQ6a
>>310
それは明らかになりません。
null文字入れるのは大抵はこっちの役目です。
312デフォルトの名無しさん (JP 0H13-1PXK)
垢版 |
2019/05/01(水) 14:41:59.38ID:yF2N0E1tH
>>304
%c は空白文字は入らないのでは?
2019/05/01(水) 15:19:37.49ID:pGaFGHQ6a
%cは文字は全部入る。
受け付ける文字をはっきりさせたいなら[]使うのがよい。
2019/05/02(木) 12:01:07.73ID:oq2ExZVd0
printf()のペアっぽいからという理由で
scanf()を使わせる初心者本をこの世から駆逐すべき
2019/05/02(木) 12:52:42.24ID:Yg4L14jR0
使い方を熟知している人が使う分には問題ないが
「良い子はマネをしてはいけません」の典型だな
2019/05/02(木) 13:24:17.15ID:+EePt9KB0
初心者はただ値が入力できりゃ楽しいんじゃね

ついでにscanfはかんたんに間違いを引き起こすことが出来るから脆弱性の説明にも使える
このご時世、かんたんに間違いを体験させること自体が難しくなってる
セキュリティが高くなると間違えさせる行動へのコストもまた高くなる
317デフォルトの名無しさん (アウアウウー Sabb-vI8p)
垢版 |
2019/05/02(木) 15:41:08.09ID:jQNzLmJja
昔のマイコン的なものだと暴走したりしてなお良い。
core dump してるようじゃまだまだ安全過ぎる。
2019/05/02(木) 19:38:22.59ID:lQcGaGZC0
たしかにscanfが危険なものだと知った時にどうやってfgetsに置き換えるか考えたの思い出した
2019/05/02(木) 21:18:22.90ID:H376nx5x0
>>287
その数%のアセンブラの部分を、おまえさんは「OS」と呼ぶのか?
2019/05/02(木) 21:20:29.21ID:H376nx5x0
>>314
scanfの仕様をロクに調べもせず自分の頭で考えもせず
どっかの受け売りを初心者に吹聴する無能老害こそ
この世から駆逐すべきだろうが
321デフォルトの名無しさん (トンモー MM93-qoXq)
垢版 |
2019/05/02(木) 21:21:11.50ID:TaSBDpemM
>>319
ヨコからスマンけど
そゅ意味じゃないのが
理解できないほどの馬鹿は
ここにくるべきではない
2019/05/02(木) 21:22:02.02ID:H376nx5x0
>>315
「よい子は真似をしてはいけません」と言われる芸当をやっているプロになろうって人には当てはまらない
2019/05/02(木) 21:24:27.49ID:H376nx5x0
>>321
おまえさんこそ>>283からの話の流れを読んでるか?
人を馬鹿呼ばわりした自分の発言に責任を持てよ
2019/05/02(木) 21:25:23.96ID:H376nx5x0
匿名掲示板だから逃げたければ逃げられるが
おまえさんの人間性の問題が変わるわけではない
325デフォルトの名無しさん (トンモー MM93-qoXq)
垢版 |
2019/05/02(木) 21:34:15.84ID:TaSBDpemM
馬鹿丸だし(笑)

論文ゼロの院生くずれ馬鹿ニート
という雰囲気プンプンだな(爆)
2019/05/02(木) 21:53:25.96ID:TlCaXbcx0
院生とかめっちゃ高評価じゃんw

俺には大学にコロコロコミックを持ってきて、全ての人間が敵に見えて毎日発狂してた同級生の江○君と被ってしまう。
頭はすこぶる良いんだけど、頭が弱い残念なアイツの雰囲気がプンプン
2019/05/02(木) 21:55:19.32ID:H376nx5x0
学歴コンプレックスまる出しだな
頭隠して尻隠さずw
328デフォルトの名無しさん (トンモー MM93-qoXq)
垢版 |
2019/05/02(木) 22:04:26.88ID:TaSBDpemM
院生の意味が理解できない馬鹿(笑)
329デフォルトの名無しさん (トンモー MM93-qoXq)
垢版 |
2019/05/02(木) 22:05:27.60ID:TaSBDpemM
学歴など無意味
馬鹿は馬鹿(笑)
2019/05/02(木) 22:06:18.25ID:BLoepDOP0
>>319
何を言いたいのか意味不明w
2019/05/02(木) 22:22:28.19ID:H376nx5x0
効いてる効いてるw
突然論文ゼロとか言い出すカモは扱いやすすぎ
2019/05/03(金) 00:28:15.71ID:ykdjIw3IM
#include <stdio.h>

int main(void){

remove("https://mevius.5ch.net/test/read.cgi/tech/1554171817/";);

return 0;
}
2019/05/03(金) 03:22:53.97ID:l9gwftmb0
文字列を消しても実態が消えないのでは
334デフォルトの名無しさん (トンモー MM93-qoXq)
垢版 |
2019/05/03(金) 07:52:51.95ID:EnpL9vkxM
Cできるけどアセンブラできない、
ってのはCもできないってことだ。
2019/05/03(金) 09:31:51.08ID:Adh7HeMA0
アセンブラからCに行ったらアセンブラでやってたアルゴリズムがCで表現できなく、非常にもどかしくて・・・
2019/05/03(金) 10:16:06.44ID:ZD3cPA9Q0
>>335
それは初耳、いや、どういうのに手こずったのか参考に教えていただけませんか?
2019/05/03(金) 17:51:44.54ID:VHrwonhY0
出来る出来ないっていう話なら、基本Cできるんじゃないかな。
CPU固有のブルック転送命令とかそんなのを除いて。
(それすら別にできるけどね。)
1命令でできてたことがめんどくさくなるってものならあるかも。
2019/05/03(金) 18:09:15.33ID:Mu7G7jjV0
アセンブラで作るにしてもでもアルゴリズムで実装しているならCでも出来るんじゃないの?
2019/05/03(金) 18:10:41.96ID:3HjiUXGl0
プラットフォーム依存の問題は言語じゃなくてコンパイラより下が解決するわけでさ、それをできると言っていいならなんでもできると思うよ。
2019/05/03(金) 18:51:30.00ID:ZD3cPA9Q0
>>335
一つ思い出しました、キャリーフラグを活用するアルゴリズムは、そのままでは C でかけずに大変ですね
ローテートとかシフトとか
2019/05/03(金) 19:20:32.29ID:Qo5d3PXm0
>335
キャリーフラグが無くてオーバーフロー/アンダーフロー判定が面倒だとか、
ビットシフトはあってもローテーションが無いとか。
ジャンプ命令使うとパイプラインが初期化されるからなるべく使うなと聞いたのに
逆汗見たらジャンプしまくってるじゃないかとか。
8/16bit時代のアセンブラは1バイト、1ステート削って処理速度稼いでたんで
上記の差を補う処理が無駄に思えて・・・。
かといってインラインアセンブラ使うのはなんか違うと(インライン使うと最適化されないとも聞いてたし)。
それならアセンブラでCから呼べる関数書いた方がすっきりするとか。

20世紀時代のことだ。
2019/05/03(金) 19:43:11.87ID:EWn4tN7a0
マシン語でコード書いてるときはオンレジスタ思考なのに
当時のCはデフォautoつまりオンメモリなので
ああ、やはりマシン語よりは速度が落ちる言語なんだな
コンパイラ言語とインタプリタ言語のような違いが
もう1つあるんだなって思っていた
2019/05/03(金) 20:21:30.59ID:B4eLqFJ00
スパゲッティなものを書いてるならともかく、真っ当にサブルーチン化してたら必要悪としてレジスタ志向は早々に諦めてたわ。
局所的に最適化するならそれは別問題として解決してた。
2019/05/03(金) 20:27:04.09ID:EWn4tN7a0
構造化なんか眼中になかったね
速度こそ純粋で美しい法律だった
2019/05/03(金) 20:31:26.00ID:4Ii/FXBd0
>>340
> 一つ思い出しました、キャリーフラグを活用するアルゴリズムは、そのままでは C でかけずに大変ですね
それはアルゴリズムと言うより実装の話かと
2019/05/03(金) 20:52:43.47ID:EWn4tN7a0
PC9801のVRAMを1ドットスクロールさせるのなんか
キャリー使って書いてたのをキャリーなしで書き直させられるのは悲しかった
2019/05/03(金) 21:19:31.21ID:0u/4Gvfl0
>>345
>アルゴリズムと言うより実装の話
いや、それは不思議な分類だと思います、DES/AES などはローテート・シフトがそのままアルゴリズムになるのでは?
2019/05/03(金) 22:27:22.12ID:4Ii/FXBd0
>>347
そのアルゴリズムにキャリーフラグなんて出てこないでしょ?
2019/05/03(金) 22:32:04.75ID:EWn4tN7a0
アルゴリズムという特定ワードに囚われて用語の定義の話に逸れていくつまらん展開だ
2019/05/04(土) 04:19:37.51ID:qzgt3pmZ0
文字列入力を受け付けて、それをstrという変数に代入する…というプログラムを書きたいのですが、知りたいことがあって以下のような条件を課させていただきます。

・for文を使い、その中でscanf(“%c”,str[i])により1文字ずつ文字をstrの各配列に格納していくこと
・文字数は最大50文字までとし、たとえば「abcd」などのように4文字であった場合も、abcdと入力→Enterが押された時点で、その文字列をstrに代入して、その4文字を表示して完了とする
・if文を使ってそれを実現すること


#include<stdio.h>
int main(void){
int i,str[50];
for(i=0;i<50;i++){ //入力処理
scanf(“%c”,str[i]);
}
for(i=0;i<50;i++){ //出力
printf(“%c”,str[i]);
}
}

このコードだと、「abcd」と入力してEnterを押しただけでは、出力されません。(50文字入力されるまで入力受け付け状態から遷移しない)
どのように改良すればよいでしょうか?
2019/05/04(土) 05:12:15.70ID:Yh80Q70x0
入力される度に文字のチェックしてみれば。
2019/05/04(土) 05:15:36.04ID:eVIwB2YR0
>>350
宿題は自分でやれ
2019/05/04(土) 05:21:50.50ID:I31OC90J0
何故誰もscanf("%c", str[i])に突っ込まないのか
2019/05/04(土) 05:39:39.99ID:RAMEL17i0
>>350
「入力処理」のforループで、「50文字入力されたら」を判定してるけど、
もう一方の終了条件「Enterが押されたら」を判定してないからでしょ。
1文字受け取るごとに、Enter '\n' ならループを抜ける、をやらなきゃ。
というわけで >>315 に至る。

>>353 このスレッドの伝統かと。>>299 以下を参照のこと。
あちらはスルーしたのに、こちらでツッコむのは抵抗感がある、みたいな。
2019/05/04(土) 10:20:54.58ID:RAMEL17i0
誤: というわけで >>315 に至る。
正: というわけで >>351 に至る。

315 を確認したところ、まるっきり見当違いでもなかったね。
356デフォルトの名無しさん (アウアウウー Sabb-H3I8)
垢版 |
2019/05/04(土) 10:47:02.91ID:lguQ1Ppja
>>354
>>299は見逃していたなあ。空目だな。
357デフォルトの名無しさん (アウアウウー Sabb-vI8p)
垢版 |
2019/05/04(土) 11:41:09.49ID:yT0QTmUja
>>350
もし宿題が本当に scanf(“%c”,str[i]) と書いてある場合は先生が間違えてるので「 scanf(“%c”, &str[i]) ですよね?」とツッコミを入れてみると良い。

そうすると君はできる学生と思われて成績が上がるるか、または気に入らんやつと思われて成績が下がると思う。
358デフォルトの名無しさん (トンモー MM93-qoXq)
垢版 |
2019/05/04(土) 13:40:22.89ID:tOD9kuurM
そういえば東大では今でも
C言語が必修なのか?

まじ時代遅れの馬鹿だと思ってたら、
Cしかできない在日の馬鹿教員が
いるのだとか
2019/05/04(土) 13:51:43.16ID:k+B84EwL0
学歴コンプレックスの人?
2019/05/04(土) 14:16:41.02ID:vXlxEQ1E0
参照型とか出てくるのにそもそも参照がなにかも理解出来てないにわかオブジェクト指向が増えるよりよっぽどマシよ
なんの言語とは言わないけども
C言語なら理解しなければ先に進まないから
2019/05/04(土) 14:19:50.76ID:7fnHNdb20
>>358
C が分からないようでは話にならないのでは?
362デフォルトの名無しさん (トンモー MM93-qoXq)
垢版 |
2019/05/04(土) 14:47:16.31ID:tOD9kuurM
>>361
トヨタ系の研究所には
Cの分かる研究員がもういないのです
研究には全く支障がないです

組込みやってる高卒やFランが
Cをやるべきでしょ?
2019/05/04(土) 14:55:00.73ID:7fnHNdb20
>>362
それは多分ありえない話でしょうね、なぜならば C は計算機言語の基本で、各種書籍ではアルゴリズムの記述に C を使うものが大半ですから
本も読めない人がトヨタの研究者とか、あなたの空想の話なのでは?
2019/05/04(土) 15:22:49.59ID:Yh80Q70x0
アルゴリズムの勉強はpythonがいいよ
2019/05/04(土) 15:25:54.07ID:7fnHNdb20
>>364
python で二分木の実装とかできますか?
2019/05/04(土) 16:05:03.07ID:Yh80Q70x0
>>365
できますん
367デフォルトの名無しさん (トンモー MM93-qoXq)
垢版 |
2019/05/04(土) 16:07:19.80ID:LvYM7SOrM
>>365
そんなのはFランの仕事でしょ?
2019/05/04(土) 16:13:20.77ID:8Q7/PMC20
論文の次はFランか、哀れだなw
2019/05/04(土) 16:49:12.48ID:vXlxEQ1E0
やっぱり相当コンプレックスの塊で頭悪いんだろうなぁ
2019/05/04(土) 18:28:05.43ID:7fnHNdb20
>>366
本当ですか?ポインタがない python では無理なんじゃないですか!?
371デフォルトの名無しさん (アウアウウー Sabb-vI8p)
垢版 |
2019/05/04(土) 18:39:36.30ID:yT0QTmUja
pythonって参照ないの?
2019/05/04(土) 18:43:01.66ID:gINSNBZZa
真面目に言うとpythonは基本的に全部参照渡しだね。
参照したものを直接いじれるかというとそうでない場合があるけども。
2019/05/04(土) 19:05:41.64ID:7fnHNdb20
>>372
なるほど、ではユーザー定義の型は自動的に参照扱い、すなわち Java みたいなかんじなんですね
であれば苦労すれば二分木を実装できますね、大変失礼いたしました
2019/05/04(土) 19:18:51.61ID:21Of2ELD0
>>370
Python に限らず動的型の言語の多くは変数に値を入れるんじゃなくて、
オブジェクトと変数の間に束縛 (bind) を作ることで成り立ってる。
辿ることでオブジェクトを参照するんだ。 実質的にポインタだよ。 むしろポインタしかない。

(小さい値 (小さい数値とか文字とか) はアロケーションを抑制するためにそのまま
ワードに突っ込むような最適化をする言語 (処理系) もあるけども。)
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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