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
2019/04/23(火) 12:32:49.10ID:ITUqyUOr0
>>216
何か用か?
218デフォルトの名無しさん (アウアウウー Sacd-kBNU)
垢版 |
2019/04/23(火) 15:59:59.72ID:gv0SOq8da
>>213
文字を入力するだけで変数に入れる必要がないなら getchar() で '\n' 三回読んだら終わり。
変数に入れる必要があるなら最初の値の分だけ char * を保持する配列を char ** に malloc() や calloc() 使って確保して、更に全要素を malloc() や calloc() 使って確保して、それに対して fgets() を繰り返す。
2019/04/23(火) 16:43:21.53ID:56NoAZCP0
>>215
土曜は日曜であり、全は一である。
220デフォルトの名無しさん (アウアウウー Sacd-kBNU)
垢版 |
2019/04/23(火) 17:41:00.23ID:gv0SOq8da
月月火水木金金
2019/04/23(火) 20:20:58.69ID:i9di+stUM
おじいちゃん戦争はもう終わってるよ
2019/04/23(火) 20:24:41.37ID:aEjNiIWC0
令和も戦争のない年号になると良いが、ちょっと雲行きが怪しいな。
223デフォルトの名無しさん (ワッチョイ 69ad-61/s)
垢版 |
2019/04/23(火) 20:44:52.15ID:k/LWg8++0
>>222
日本は戦争しないでしょ?
そして巻き込まれもしないと思う。

だって日本には軍隊がないんだもの。
自衛隊なんて銃もろくに撃てないへなちょこばかりだから。
2019/04/23(火) 20:56:24.90ID:XDXL3q34a
コンピュータ好きなオタクって勇ましいやつおおいよね
2019/04/23(火) 21:21:40.55ID:Dz3CEytOM
語尾によねをつけて同調を求めたがるのは左巻きの典型だよね
2019/04/23(火) 21:58:52.95ID:ITUqyUOr0
俺は右巻きだが「よね」はよく使う
レッテル貼りは瞬時に反証される論議の中では自爆行為だ
しょーもね
2019/04/23(火) 22:34:42.99ID:bUhZMb1va
やっぱり自信がないからコンピュータ好きになるのかな?
2019/04/23(火) 23:06:00.81ID:ITUqyUOr0
断言できないおまえが自信ないだけだ(pgr
229デフォルトの名無しさん (ワッチョイ 3602-Mntl)
垢版 |
2019/04/24(水) 03:42:44.00ID:SZsIFAZx0
よね
2019/04/24(水) 08:04:11.05ID:P2wnwvJc0
ICEデバッグしてるとき、とある変数の値をいくつか足し算して、別の変数に代入する関数で、
変数の内容同じなのに、結果が違う。。
最適化OFFにしてビルドしてる。
2019/04/24(水) 08:05:24.40ID:P2wnwvJc0
その関数は、別の場所から2度呼んでて、1回目と2回目で結果が違う
計算に使う値は全く同じなのに
2019/04/24(水) 08:51:50.10ID:zvRm4GUYM
>>230
自分の経験則で言えば、大抵は関数の処理途中で割り込み処理が発生してメモリかレジスタバンクを書き換えていると思う
2019/04/24(水) 10:14:34.45ID:V3yGzJXe0
一回目から二回目の間で変数のどれかが書き変わってるに決まってんじゃん
2019/04/24(水) 10:55:30.16ID:HTDgYDWT0
>>230
加算に使っているレジスタを割り込みで使いっぱしてね?
2019/04/24(水) 10:58:08.05ID:HTDgYDWT0
>>230
_Atomic使ってるか?
2019/04/24(水) 11:21:13.53ID:IysC1nu6x
>>230
ほぼ100%スタックのゴミ拾ってる。
2019/04/24(水) 12:37:12.74ID:AiHhhuXgM
まれにポインタ周りバグっててメモリー書き換えてるとか
てかICE使ってるならそこで止めて変数の中身確認しろよ
2019/04/24(水) 13:14:34.92ID:V3yGzJXe0
ICE製造の過程でICEそのもののデバッグでもしてんじゃね
239デフォルトの名無しさん (ワッチョイ 3602-Mntl)
垢版 |
2019/04/24(水) 18:27:12.37ID:SZsIFAZx0
まずはアイスクリームでも食べて休むといい
よね
2019/04/24(水) 18:45:45.47ID:JD7HGNH40
ここ20年ほどフルICE使ってないなぁ。
未だにあるんだろうか?
2019/04/24(水) 20:00:32.37ID:P2wnwvJc0
230だけど、俺の見当違いでした。
インプットの変数の値が違っていたので、当然足し算の結果も違っていたというオチ。
ICEデバッグだと変数を表示するとメモリの中じゃなくて表示した時点で割り当てられたレジスタの値を表示するので、
変数としては変わってないはずなのに他で書き換えられるので逐一変わって混乱していた。

ICE初心者でしたw
2019/04/24(水) 22:16:06.15ID:03JhFb4B0
デバッグ中に最適化を抑制するのは間違いではないと思います。
慣れてくると最適化したままでもある程度推測できるようになりますので、
リリースオプションでICEを使用することの方が多くなるかもしれません。
2019/04/24(水) 22:18:24.10ID:lwqMqFKi0
CPUぶっこぬいて差し替えてやるやつ?
2019/04/24(水) 22:41:36.06ID:W4WRMDmVM
ぶっこ抜くと言うよりターゲットボードのCPUの代わりに専用のソケットを実装して専用プローブで接続する
PCなどと違って組み込みのSoCにソケットなど無いのでぶっこ抜いて差し替えるなど無理
2019/04/24(水) 23:07:42.00ID:gVrMWpFh0
>>243
20年前のICEならそうなんだろう
>>244
JTAGの話か?
ソケット云々の前にGHzオーダーのCPUだと信号引き出すなんてとても無理
2019/04/25(木) 00:33:17.24ID:1oTSGFU/a
scanf("%d%d%d", &a, &b, &c);
こうまとめて入力するのをfgets使うとどうやるの?

fgets(s, sizeof(s), stdin);
sscanf(s, "%d", &a);

このセットをループで三つまわすしかない?
一行でやる方法あるんかな
2019/04/25(木) 00:56:36.76ID:WntZOZIYa
いや、1行中に入ってるなら同じじゃないか?
行の区切りとか要素の区切りとか細かい話はあるけども
2019/04/25(木) 03:18:03.15ID:rmDyF6iV0
またfgets教か
マジいやらしさがカルト教団さながらだ
249デフォルトの名無しさん (ワッチョイ 1b02-1PXK)
垢版 |
2019/04/25(木) 04:21:17.20ID:D6NtakiX0
>>246
なんというか、ほとんど答えが上に書いてあるかのような質問だな・・・

sscanf(s, "%d%d%d", &a, &b, &c);
2019/04/25(木) 05:17:53.53ID:6xUIrXDu0
>>246
https://mevius.5ch.net/test/read.cgi/tech/1434079972/55
2019/04/25(木) 21:00:37.28ID:E+TyVG800
>>244
そんな感じ
CPUじゃなくてROMだけど
就業先で当たり前のようにICE使わせて頂いてるけど、お値段見てビックリ・・
2019/04/26(金) 10:01:13.22ID:EJ4BH9nCa
>>250
商売すんなや…
253デフォルトの名無しさん (アウアウウー Sae9-tnqD)
垢版 |
2019/04/26(金) 10:28:55.76ID:YRtkzMZRa
>>252
それって商売になってるのか?
普通に公開されてるが。
2019/04/26(金) 13:15:14.86ID:0jspcAl20
商売のための宣伝だろ
255デフォルトの名無しさん (アウアウウー Sae9-tnqD)
垢版 |
2019/04/26(金) 14:06:27.08ID:YRtkzMZRa
そうなの?何の宣伝になってるのか全くわからんのだが。
2019/04/26(金) 14:27:22.39ID:0jspcAl20
誰もアクセスしない隔離スレなんで
時々こうやって宣伝して引っかかるカモを呼び寄せようと
257デフォルトの名無しさん (アウアウウー Sae9-tnqD)
垢版 |
2019/04/26(金) 14:36:01.95ID:YRtkzMZRa
元々有償でプログラム作るスレとして作ったスレだったんだろうけど結局誰もそんな風には使ってなくてただのプログラム発表の場になってるよね?

ま、しかし、5ちゃんのような掲示板で稼ぐのは無理があるよなあ。それ専用のサイトなら可能だろうけど。
2019/04/27(土) 10:20:19.39ID:H+/AGAV+0
既存をちょっと修正してほぼデグレのテストというスタイルの俺には、
要望に応じて1から新しいプログラムを組む人を尊敬する
修正は修正で既存への影響の面でそれなりのノウハウは要るにしても
2019/04/27(土) 10:42:26.45ID:e+ce++rA0
>>258
むしろ俺は人の作ったワケワカメなコードを文句も言わずメンテしてる人はすごいと思う。
260デフォルトの名無しさん (トンモー MM79-LqAG)
垢版 |
2019/04/27(土) 16:22:24.62ID:W91FG5LxM
>>259
文句を言わずに、というより
文句を言わせずに、だと思う。

俺は奴隷だったので
よくわかる。

会社辞めて派遣になって
気分すっきり!
な~んの責任もないのに
年収1000万だもの

派遣辞められません!
2019/04/27(土) 17:56:34.08ID:H+/AGAV+0
>>260
派遣でそれほどの能力があったら独立して2000万は稼げるのでは
2019/04/27(土) 18:25:28.46ID:H+/AGAV+0
派遣でそれだけ貰える程のスキルがあるってことは、
C言語だと本当に低レベルのデバイスの制御からビジネスロジックの
設計からお任せできるレベル
独立すべきでしょう
2019/04/27(土) 19:19:15.66ID:e+ce++rA0
ハードの設計から組み込みソフトはもちろんWindows、Android.、iOSのアプリ、DBもWebもゼロから設計できるスキルがあったらどこに行ったらそんな高級取りになれるでしょうか?
2019/04/27(土) 19:26:07.70ID:mTDcTDsb0
火事の現場
2019/04/27(土) 19:26:19.83ID:H+/AGAV+0
コンサルレベルでもなかなか
266デフォルトの名無しさん (ワッチョイ 1b02-KxX0)
垢版 |
2019/04/28(日) 03:02:09.70ID:IQfIs7rY0
自分で開業した方が良さそうな感じもするが、そうなると営業力も必要になるな。

まあでも Android や iOS アプリの場合は営業力あまりなくても世界中に売れれば儲かる事がある。
電卓アプリでこんな風に稼いでいる人も居るし。
https://appmarketinglabo.net/calculator-1100man/
これは世界での需要がどのぐらいあるかとプログラムが簡単かどうかはあまり関係ないってことでもあるかな。
需要がないものだと作るのが大変なプログラムでも売れなくて稼げない。苦労と儲けは無関係。
267デフォルトの名無しさん (ワッチョイ 1b8c-B2tE)
垢版 |
2019/04/28(日) 07:50:35.97ID:3xnz0I0C0
大半の自営業は開発費半分を前金でもらいとんずら。
268デフォルトの名無しさん (トンモー MM79-LqAG)
垢版 |
2019/04/28(日) 13:24:06.83ID:JRRKtJTbM
>>267
日本に前金払うところなんてないから。
たからデスマになる
2019/04/28(日) 20:30:30.58ID:I/cjvEXhM
そんなことすれば詐欺として警察に追われる身になる
270デフォルトの名無しさん (ワッチョイ 5d21-ynyp)
垢版 |
2019/04/29(月) 21:07:19.95ID:2RjR17Kk0
Linuxでシリアル通信のソフトを作成しています。
http://codepad.org/L4BLwgAQ

コマンドを送信すると、相手が応答電文を返してくる仕様なのですが
write→readでは、うまく受信できないようです。
teratermで同じ電文を投げると、受信できるので
このソースが悪いのだと思っています。
投げて、受けるというのを上手くやるにはどうしたらいいでしょうか。
お助けをよろしくおねがいします。
2019/04/29(月) 21:50:17.89ID:AbuAGGh6a
socatパクってみれば
2019/04/29(月) 22:10:00.81ID:atpu4K080
>>270
とりあえずwrite()の戻り値とread()の戻り値が-1でないことから確認しようか
2019/04/29(月) 22:16:47.11ID:zdawGwopM
>>272
writeはバイト数の13が返ってきます。
readはここで止まります。ずっと待ち?状態になるようで、ctrl+cで抜けるしかありません。
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はかんたんに間違いを引き起こすことが出来るから脆弱性の説明にも使える
このご時世、かんたんに間違いを体験させること自体が難しくなってる
セキュリティが高くなると間違えさせる行動へのコストもまた高くなる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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