19/04/21 17:58:31.04 XP3sT+Yd0.net
>>183
全然わかってねえじゃん
あと数文字をコーディングすることが
Cの機能を説明するサンプルとしては邪魔だったら
その数文字をコーディングしねえのは当たり前だ
サンプルってのはS/N比が大事なんだよ
そこで伝えようとしていること以外のノイズは
徹底排除する必要があるんだ
201:デフォルトの名無しさん
19/04/21 17:59:26.99 XP3sT+Yd0.net
>>191
おまえ自分が作ったプログラムの敵が未来からタイムマシンで暗殺に来るぞ
202:デフォルトの名無しさん
19/04/21 19:19:27.57 AjzRUWat0.net
脳波を検出して見たいVRを出してやるわ ==> 人類滅亡
203:デフォルトの名無しさん
19/04/21 20:04:10.03 gW8lsVjX0.net
>>193
初心者向きの本ですから真似する馬鹿もいるということを
想像すべきでしょうね。
おまえこそ馬鹿だな
想像力がゼロだ
笑えるぞ?
知ったかのクズだ
204:デフォルトの名無しさん
19/04/21 20:08:24.68 YKRN8m01M.net
今どきCとか
K&Rとかで
能書きこいて
馬鹿ジジイにも
ほどがあるwww
205:デフォルトの名無しさん
19/04/21 20:10:12.48 XP3sT+Yd0.net
>>196
「初心者」という隠れ蓑に逃げる馬鹿って、自己紹介か?
206:デフォルトの名無しさん
19/04/21 20:48:49.16 ZEQClH310.net
>>197
イラッとするのはわからんでもないが、ここはC言語スレだからそんなこというのは荒らしだぞ
207:デフォルトの名無しさん
19/04/21 23:45:38.39 2X82VWTJ0.net
>>196
あの時代の初心者は今時の初心者と違って、大半はちゃんと自分で考えて自力で技術を習得していく姿勢があり、ただ教えてもらった通りにするだけのようなのは自然と落伍していったと思うよ。当時の想定する読者層にあった適切な内容だったろうと思う。
208:デフォルトの名無しさん
19/04/22 00:28:58.76 1mQu6LUBa.net
単に裾野が広がってるだけで
209:デフォルトの名無しさん
19/04/22 01:07:58.48 HMkHCtfr0.net
>>196
人の意見を聞く気がないなら
チラシの裏にでも書いてなよ
175にもあるけど
初心者の真似するバカのコードが
そのままリリースされる態勢を反省した方が前向き
あと何であの本に信奉者がいるのか
理解できない自分も
210:デフォルトの名無しさん
19/04/22 02:24:36.97 RPRc4IKz0.net
>>200
当時のccが寡黙だったのが却ってよかったよな
なんで動かないのか自分の頭で考えるしかなかった
今どきのコンパイラは過保護で
落伍すべき者を引っ込み付かないところまで引きずっちまう
211:デフォルトの名無しさん
19/04/22 08:39:06.04 29O1k2F2M.net
>>202
お前のような馬鹿な奴は
そのうち自滅するよ(笑)
お前は「おれ天才!」とか
思ってる低知能のクズだ
もっともたちが悪いクズ
212:デフォルトの名無しさん
19/04/22 10:09:04.63 y6AB5FtQa.net
>>179
いや、俺は使えない。
C++は30年ぐらい前にやろうとはしたが当時のPCでもワークステーションでも流行っておらず当然そのような仕事もなく、自分は主にUNIX関係の仕事だったので使う機会がほとんどなかった。
その後PCの方ではWindowsが流行ったが仕事はそのままなので変わらず、趣味ではWindowsでDelphi使ったりもしたがC++はほとんど手を着けず大雑把にしかわからないまま。
仕事はやがてLinux関係に移行するがそこでもC++が必要とされる事はなく現在に至る。趣味でJavaを覚えたりもしたが自分の仕事ではほとんど必要とされなかった。
今は趣味で Kotlin を覚えているところだが、C++については複雑化�
213:オ過ぎたようなので今さらやる気は起きない。多分今後もやらないと思う。 Windowsプログラムを作る必要が出てきたとしても今ならC++なしで出来そうだし必要になるとしても局所的だろう。
214:193
19/04/22 10:13:09.11 RPRc4IKz0.net
>>204
196の時点ではまだ僅かに技術的な話題に振れていたが
今度は100%罵倒のみ
とうとう落ちるところまで落ちたな
215:デフォルトの名無しさん
19/04/22 12:15:04.42 IrgyqU7Vx.net
>>179
MFCが流行ってたりC++Builderが流行ってた時にはそれなりに使う人口がいたと思うけど、過去メンテ以外で現在積極的に使ってる人は少ないかもね。
216:デフォルトの名無しさん
19/04/23 01:03:01.93 dZlKsmD/r.net
>>157
え?こんな書き方出来たの!?
初めて見た
[]が演算子??
そんなの今まで読んだ本にのってなかったよ!
217:
19/04/23 06:21:01.09 JSYnwir10.net
>>208
ioccc
218:デフォルトの名無しさん
19/04/23 07:52:30.55 ITUqyUOr0.net
URLリンク(www.ioccc.org)
219:デフォルトの名無しさん
19/04/23 09:50:22.14 tEWsQxq+M.net
[]が演算子って常識じゃないのか?
どの優先順位表にも載ってるだろ?
220:デフォルトの名無しさん
19/04/23 09:56:40.16 EYeaOvlg0.net
もちろんこういう書き方も出来るのが[]演算子と文字列リテラルの合わせ技
int wday = 2;
printf("%c", "SMTWTFS"[wday]);
221:デフォルトの名無しさん
19/04/23 11:04:29.35 lZSXa7efa.net
標準入力で最初に数字を入力して、その値だけ文字列を入力するのはどんな感じで書けばいいですか
3
asdf
qwert
sdfghg
こんな感じで最初の入力の値に合わせて配列を用意する?感じになるとおもうんですが
なにもひらめきまへん
222:デフォルトの名無しさん
19/04/23 11:22:00.88 ITUqyUOr0.net
>>211
配列の宣言に使う[]は演算子ではない
直接宣言子の一部だ
意図的に演算子に似せてあるので
勘違いするのは無理ないが
演算子は式に作用するもので
宣言子に含まれる[]はこの定義に該当しない
223:デフォルトの名無しさん
19/04/23 11:44:40.51 5E3fgZzA0.net
>>212
土日・・・
224:デフォルトの名無しさん
19/04/23 11:54:58.53 mPLR84qwa.net
>>214
またおまえか
225:デフォルトの名無しさん
19/04/23 12:32:49.10 ITUqyUOr0.net
>>216
何か用か?
226:デフォルトの名無しさん
19/04/23 15:59:59.72 gv0SOq8da.net
>>213
文字を入力するだけで変数に入れる必要がないなら getchar() で '\n' 三回読んだら終わり。
変数に入れる必要があるなら最初の値の分だけ char * を保持する配列を char ** に malloc() や calloc() 使って確保して、更に全要素を malloc() や calloc() 使って確保して、それに対して fgets() を繰り返す。
227:デフォルトの名無しさん
19/04/23 16:43:21.53 56NoAZCP0.net
>>215
土曜は日曜であり、全は一である。
228:デフォルトの名無しさん
19/04/23 17:41:00.23 gv0SOq8da.net
月月火水木金金
229:デフォルトの名無しさん
19/04/23 20:20:58.69 i9di+stUM.net
おじいちゃん戦争はもう終わってるよ
230:デフォルトの名無しさん
19/04/23 20:24:41.37 aEjNiIWC0.net
令和も戦争のない年号になると良いが、ちょっと雲行きが怪しいな。
231:デフォルトの名無しさん
19/04/23 20:44:52.15 k/LWg8++0.net
>>222
日本は戦争しないでしょ?
そして巻き込まれもしないと思う。
だって日本には軍隊がないんだもの。
自衛隊なんて銃もろくに撃てないへなちょこばかりだから。
232:デフォルトの名無しさん
19/04/23 20:56:24.90 XDXL3q34a.net
コンピュータ好きなオタクって勇ましいやつおおいよね
233:デフォルトの名無しさん
19/04/23 21:21:40.55 Dz3CEytOM.net
語尾によねをつけて同調
234:を求めたがるのは左巻きの典型だよね
235:デフォルトの名無しさん
19/04/23 21:58:52.95 ITUqyUOr0.net
俺は右巻きだが「よね」はよく使う
レッテル貼りは瞬時に反証される論議の中では自爆行為だ
しょーもね
236:デフォルトの名無しさん
19/04/23 22:34:42.99 bUhZMb1va.net
やっぱり自信がないからコンピュータ好きになるのかな?
237:デフォルトの名無しさん
19/04/23 23:06:00.81 ITUqyUOr0.net
断言できないおまえが自信ないだけだ(pgr
238:デフォルトの名無しさん
19/04/24 03:42:44.00 SZsIFAZx0.net
よね
239:デフォルトの名無しさん
19/04/24 08:04:11.05 P2wnwvJc0.net
ICEデバッグしてるとき、とある変数の値をいくつか足し算して、別の変数に代入する関数で、
変数の内容同じなのに、結果が違う。。
最適化OFFにしてビルドしてる。
240:デフォルトの名無しさん
19/04/24 08:05:24.40 P2wnwvJc0.net
その関数は、別の場所から2度呼んでて、1回目と2回目で結果が違う
計算に使う値は全く同じなのに
241:デフォルトの名無しさん
19/04/24 08:51:50.10 zvRm4GUYM.net
>>230
自分の経験則で言えば、大抵は関数の処理途中で割り込み処理が発生してメモリかレジスタバンクを書き換えていると思う
242:デフォルトの名無しさん
19/04/24 10:14:34.45 V3yGzJXe0.net
一回目から二回目の間で変数のどれかが書き変わってるに決まってんじゃん
243:デフォルトの名無しさん
19/04/24 10:55:30.16 HTDgYDWT0.net
>>230
加算に使っているレジスタを割り込みで使いっぱしてね?
244:デフォルトの名無しさん
19/04/24 10:58:08.05 HTDgYDWT0.net
>>230
_Atomic使ってるか?
245:デフォルトの名無しさん
19/04/24 11:21:13.53 IysC1nu6x.net
>>230
ほぼ100%スタックのゴミ拾ってる。
246:デフォルトの名無しさん
19/04/24 12:37:12.74 AiHhhuXgM.net
まれにポインタ周りバグっててメモリー書き換えてるとか
てかICE使ってるならそこで止めて変数の中身確認しろよ
247:デフォルトの名無しさん
19/04/24 13:14:34.92 V3yGzJXe0.net
ICE製造の過程でICEそのもののデバッグでもしてんじゃね
248:デフォルトの名無しさん
19/04/24 18:27:12.37 SZsIFAZx0.net
まずはアイスクリームでも食べて休むといい
よね
249:デフォルトの名無しさん
19/04/24 18:45:45.47 JD7HGNH40.net
ここ20年ほどフルICE使ってないなぁ。
未だにあるんだろうか?
250:デフォルトの名無しさん
19/04/24 20:00:32.37 P2wnwvJc0.net
230だけど、俺の見当違いでした。
インプットの変数の値が違っていたので、当然足し算の結果も違っていたというオチ。
ICEデバッグだと変数を表示するとメモリの中じゃなくて表示した時点で割り当てられたレジスタの値を表示するので、
変数としては変わってないはずなのに他で書き換えられるので逐一変わって混乱していた。
ICE初心者でしたw
251:デフォルトの名無しさん
19/04/24 22:16:06.15 03JhFb4B0.net
デバッグ中に最適化を抑制するのは間違いではないと思います。
慣れてくると最適化したままでもある程度推測できるようになりますので、
リリースオプションでICEを使用することの方が多くなるかもしれません。
252:デフォルトの名無しさん
19/04/24 22:18:24.10 lwqMqFKi0.net
CPUぶっこぬいて差し替えてやるやつ?
253:デフォルトの名無しさん
19/04/24 22:41:36.06 W4WRMDmVM.net
ぶっこ抜くと言うよりターゲットボードのCPUの代わりに専用のソケットを実装して専用プローブで接続する
PCなどと違って組み込みのSoCにソケットなど無いのでぶっこ抜いて差し替えるなど無理
254:デフォルトの名無しさん
19/04/24 23:07:42.00 gVrMWpFh0.net
>>243
20年前のICEならそうなんだろう
>>244
JTAGの話か?
ソケット云々の前にGHzオーダーのCPUだと信号引き出すなんてとても無理
255:デフォルトの名無しさん
19/04/25 00:33:17.24 1oTSGFU/a.net
scanf("%d%d%d", &a, &b, &c);
こうまとめて入力するのをfgets使うとどうやるの
256:? fgets(s, sizeof(s), stdin); sscanf(s, "%d", &a); ↑ このセットをループで三つまわすしかない? 一行でやる方法あるんかな
257:デフォルトの名無しさん
19/04/25 00:56:36.76 WntZOZIYa.net
いや、1行中に入ってるなら同じじゃないか?
行の区切りとか要素の区切りとか細かい話はあるけども
258:デフォルトの名無しさん
19/04/25 03:18:03.15 rmDyF6iV0.net
またfgets教か
マジいやらしさがカルト教団さながらだ
259:デフォルトの名無しさん
19/04/25 04:21:17.20 D6NtakiX0.net
>>246
なんというか、ほとんど答えが上に書いてあるかのような質問だな・・・
sscanf(s, "%d%d%d", &a, &b, &c);
260:
19/04/25 05:17:53.53 6xUIrXDu0.net
>>246
スレリンク(tech板:55番)
261:デフォルトの名無しさん
19/04/25 21:00:37.28 E+TyVG800.net
>>244
そんな感じ
CPUじゃなくてROMだけど
就業先で当たり前のようにICE使わせて頂いてるけど、お値段見てビックリ・・
262:デフォルトの名無しさん
19/04/26 10:01:13.22 EJ4BH9nCa.net
>>250
商売すんなや…
263:デフォルトの名無しさん
19/04/26 10:28:55.76 YRtkzMZRa.net
>>252
それって商売になってるのか?
普通に公開されてるが。
264:デフォルトの名無しさん
19/04/26 13:15:14.86 0jspcAl20.net
商売のための宣伝だろ
265:デフォルトの名無しさん
19/04/26 14:06:27.08 YRtkzMZRa.net
そうなの?何の宣伝になってるのか全くわからんのだが。
266:デフォルトの名無しさん
19/04/26 14:27:22.39 0jspcAl20.net
誰もアクセスしない隔離スレなんで
時々こうやって宣伝して引っかかるカモを呼び寄せようと
267:デフォルトの名無しさん
19/04/26 14:36:01.95 YRtkzMZRa.net
元々有償でプログラム作るスレとして作ったスレだったんだろうけど結局誰もそんな風には使ってなくてただのプログラム発表の場になってるよね?
ま、しかし、5ちゃんのような掲示板で稼ぐのは無理があるよなあ。それ専用のサイトなら可能だろうけど。
268:デフォルトの名無しさん
19/04/27 10:20:19.39 H+/AGAV+0.net
既存をちょっと修正してほぼデグレのテストというスタイルの俺には、
要望に応じて1から新しいプログラムを組む人を尊敬する
修正は修正で既存への影響の面でそれなりのノウハウは要るにしても
269:デフォルトの名無しさん
19/04/27 10:42:26.45 e+ce++rA0.net
>>258
むしろ俺は人の作ったワケワカメなコードを文句も言わずメンテしてる人はすごいと思う。
270:デフォルトの名無しさん
19/04/27 16:22:24.62 W91FG5LxM.net
>>259
文句を言わずに、というより
文句を言わせずに、だと思う。
俺は奴隷だったので
よくわかる。
会社辞めて派遣になって
気分すっきり!
な~んの責任もないのに
年収1000万だもの
派遣辞められません!
271:デフォルトの名無しさん
19/04/27 17:56:34.08 H+/AGAV+0.net
>>260
派遣でそれほどの能力があったら独立して2000万は稼げるのでは
272:デフォルトの名無しさん
19/04/27 18:25:28.46 H+/AGAV+0.net
派遣でそれだけ貰える程のスキルがあるってことは、
C言語だと本当に低レベルのデバイスの制御からビジネスロジックの
設計からお任せできるレベル
独立すべきでしょう
273:デフォルトの名無しさん
19/04/27 19:19:15.66 e+ce++rA0.net
ハードの設計から組み込みソフトはもちろんWindows、Android.、iOSのアプリ、DBもWebもゼロから設計できるスキルがあったらどこに行ったらそんな高級取りになれるでしょうか?
274:デフォルトの名無しさん
19/04/27 19:26:07.70 mTDcTDsb0.net
火事の現場
275:デフォルトの名無しさん
19/04/27 19:26:19.83 H+/AGAV+0.net
コンサルレベルでもなかなか
276:デフォルトの名無しさん
19/04/28 03:02:09.70 IQfIs7rY0.net
自分で開業した方が良さそうな感じもするが、そうなると営業力も必要になるな。
まあでも Android や iOS アプリの場合は営業力あまりなくても世界中に売れれば儲かる事がある。
電卓アプリでこんな風に稼いでいる人も居るし。
URLリンク(appmarketinglabo.net)
これは世界での需要がどのぐらいあるかとプログラムが簡単かどうかはあまり関係ないってことでもあるかな。
需要がないものだと作るのが大変なプログラムでも売れなくて稼げない。苦労と儲けは無関係。
277:デフォルトの名無しさん
19/04/28 07:50:35.97 3xnz0I0C0.net
大半の自営業は開発費半分を前金でもらいとんずら。
278:デフォルトの名無しさん
19/04/28 13:24:06.83 JRRKtJTbM.net
>>267
日本に前金払うところなんてないから。
たからデスマになる
279:デフォルトの名無しさん
19/04/28 20:30:30.58 I/cjvEXhM.net
そんなことすれば詐欺として警察に追われる身になる
280:デフォルトの名無しさん
19/04/29 21:07:19.95 2RjR17Kk0.net
Linuxでシリアル通信のソフトを作成しています。
URLリンク(codepad.org)
コマンドを送信すると、相手が応答電文を返してくる仕様なのですが
write→readでは、うまく受信できないようです。
teratermで同じ電文を投げると、受信できるので
このソースが悪いのだと思っています。
投げて、受けるというのを上手くやるにはどうしたらいいでしょうか。
お助けをよろしくおねがいします。
281:デフォルトの名無しさん
19/04/29 21:50:17.89 AbuAGGh6a.net
socatパクってみれば
282:デフォルトの名無しさん
19/04/29 22:10:00.81 atpu4K080.net
>>270
とりあえずwrite()の戻り値とread()の戻り値が-1でないことから確認しようか
283:デフォルトの名無しさん
19/04/29 22:16:47.11 zdawGwopM.net
>>272
writeはバイト数の13が返ってきます。
readはここで止まります。ずっと待ち?状態になるようで、ctrl+cで抜けるしかありません。
284:デフォルトの名無しさん
19/04/29 22:19:37.72 dHR449jcM.net
Cっていいよね。
シンプルで全て見えてる。
キチンと組めば性能も素晴らしく、
ソースも分かりやすい。
ま、馬鹿が使うと酷いことになるから
馬鹿には触らせたくない!
馬鹿にはJavaがお似合いw
285:デフォルトの名無しさん
19/04/29 22:40:41.10 atpu4K080.net
>>273
そもそもtioが未初期化
33行目にtcgetattr(fd, &tio)とかを入れて
286:デフォルトの名無しさん
19/04/29 22:45:19.28 InnqLHhB0.net
Cのスレで用途も構造も違うJavaとか出してくるあたり相当頭悪いんだと思った
287:デフォルトの名無しさん
19/04/29 23:27:52.24 dHR449jcM.net
ああ
Javaわかんね―馬鹿か
Cしかわからん馬鹿院生って感じかな(笑)
288:デフォルトの名無しさん
19/04/30 01:53:25.72 AMBMNz/t0.net
なんでスレがカテゴライズされているかも理解出来ない
289:デフォルトの名無しさん
19/04/30 08:20:44.73 QYNECMA50.net
Cが分からないってやつはコンピュータの基礎の基礎が理解できてない。
いきなりプログラミングから学ぶからそうなる。
290:本田宗一郎
19/04/30 09:04:16.26 UDRlTLQRM.net
Cしかできない奴はCを評価できない
そんな簡単なこともわからない
院生くずれのバカニート(笑)
291:デフォルトの名無しさん
19/04/30 10:31:21.97 F
292:QfKtoeU0.net
293:デフォルトの名無しさん
19/04/30 11:10:18.88 UDRlTLQRM.net
できね―よ馬鹿
294:デフォルトの名無しさん
19/04/30 11:15:16.30 /zD1IEOE0.net
OSなしで書ける言語はC?
295:
19/04/30 11:39:21.09 iYYZTFZo0.net
>>283
C といえども OS なしではなにもできません
296:デフォルトの名無しさん
19/04/30 11:40:42.65 FQfKtoeU0.net
フリースタンディング環境のことだろ
ソース入力やビルドをOSなしでって意味ではなく
297:デフォルトの名無しさん
19/04/30 11:43:53.69 vCAloE34a.net
ハンドコンパイル・アセンブルするってことだろう
298:
19/04/30 11:45:02.69 iYYZTFZo0.net
>>285
C だけではなにも出来ないのではないでしょうか、最低限アセンブラの部分が数%はあるでしょう?
299:デフォルトの名無しさん
19/04/30 12:02:29.80 FWtA2SNeM.net
クロス開発ではホスト環境とターゲットは別
小規模組込み開発ではターゲットにはOSと呼べるものが存在しない場合もある
300:デフォルトの名無しさん
19/04/30 12:17:23.14 QYNECMA50.net
>>287
CPUによってはリセットエントリから100%C言語だけで記述できるよ。
301:デフォルトの名無しさん
19/04/30 12:28:19.12 AMBMNz/t0.net
書くことはできる
紙と鉛筆さえあれば
302:デフォルトの名無しさん
19/04/30 13:23:52.39 JZ+qVZdl0.net
OS無しで動くプログラムが書ける言語はC?
ってことだろうな
303:
19/04/30 13:41:26.32 iYYZTFZo0.net
>>289
へえ!そうなんですか!多倍長演算をCで書くときキャリーフラグはどう扱うのですか?
304:デフォルトの名無しさん
19/04/30 14:20:29.60 Cm5pFeJF0.net
>>292
15bit+キャリーみたいな形で扱えばいいだけ
305:
19/04/30 15:00:43.85 iYYZTFZo0.net
>>293
それは私もやりましたが、悲惨なコーディングになりました、キャリーを使えるのにそれを無視してCですべて記述するとか、ありえない選択だと考えています
スレリンク(tech板:51番)
306:デフォルトの名無しさん
19/04/30 15:58:16.84 QYNECMA50.net
>>294
そりゃビットサーチとか場合によってはCPUの機能を使ったほうが速かったりシンプルに書けるケースもあるけど、それはそれでまた別の話。
それを以てC言語で書けないとは言えないよ。
307:
19/04/30 16:35:39.02 iYYZTFZo0.net
>>295
まあ java だけで「やってしまった」OSというのもありますから…多分 JNI を使っているとは思いますけど…
C 言語だけで全部やってしまう、というのはありえなく、例外 exception の実装に有用な setjump(), longjump() ですら、CPU を叩かずにはいられない内容ですから、世に蔓延する「C言語マンセー」は、その機会があればなんとしても叩かずにはいられないのです
308:デフォルトの名無しさん
19/04/30 17:01:36.40 QYNECMA50.net
>>296
もしかしたら貴方と私は違う思想の元で仕事してるのかも。
JNIはAndroidぐらいでしか使ってない、てかそもそもJavaを使う機会が少ないような業界の人です。
なんちゃってtry~catchのためのsetjmp系はそれでもやっぱりアセンブラを使わないC言語の範疇内な訳であって、やっぱりC言語否定の理由にはならんとです。
唯一、OSを記述する際のタスクプリエンプトだけはC言語だけで記述できず悪魔のスタック操作とコンテキスト切り替えが必要なのでアセンブラが必須だとは思いますが。
309:デフォルトの名無しさん
19/04/30 17:54:15.66 Cm5pFeJF0.net
>>296
別にsetjmp, longjmpなくてもプログラムは組めるし
Memo
310:ry Mapped I/Oならデバイス制御もC言語だけで組めるだろ
311:デフォルトの名無しさん
19/04/30 18:21:31.59 hc3e5D+80.net
プログラミング素人です。
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以降は何が格納されているのか自分で調べる方法がわかりません…
312:さまよえる蟻人間
19/04/30 18:41:15.22 lzNlO/OB0.net
>>299
C/C++では文字は整数なんだ。整数として出力して、アスキー表を参照すれば、文字がわかるはず。
313:
19/04/30 18:44:59.71 iYYZTFZo0.net
>>299
鋭い質問ですね…手元でいろいろ試していますが、今ひとつ事情がつかめないでいます
URLリンク(ideone.com)
ideone と x64/gcc/cygwin でも結果が変わってしまいます…
314:さまよえる蟻人間
19/04/30 18:51:26.51 lzNlO/OB0.net
str[5]以降は決まってないから調べてもあまり意味がない。多分ゴミデータ。
315:デフォルトの名無しさん
19/04/30 19:09:43.34 QYNECMA50.net
>>299
str[4]='¥0'
それ以降はゴミ
316:デフォルトの名無しさん
19/04/30 19:30:23.83 CZMZfk1L0.net
>>303
str[4]は'\n'じゃね?
317:デフォルトの名無しさん
19/04/30 19:42:59.90 ZdpyyptHa.net
まあ改行入れたら改行ですね
318:デフォルトの名無しさん
19/05/01 00:16:42.15 pM2+GGDK0.net
自作関数内のエラー時にerrnoに値をセットするのってマナー違反ですか?
319:デフォルトの名無しさん
19/05/01 00:27:56.20 Lv+8X8zta.net
入れられるもんなら入れてみろ
320:デフォルトの名無しさん
19/05/01 01:10:53.33 dGckAS/m0.net
信長 入れられないなら殺してしまえそのプロセス
秀吉 入れられるまで仕様変更を待とう
家康 俺が直してやる!
321:306
19/05/01 02:42:38.43 LlVhs4fx0.net
URLリンク(ideone.com)
こういうエラー処理を書きたいんですが
322:デフォルトの名無しさん
19/05/01 13:05:10.79 Vm5gAWGsa.net
>>305
str[4]が改行コードの\nだとして
str[5]は\0にはならないの?
323:デフォルトの名無しさん
19/05/01 14:38:29.13 pGaFGHQ6a.net
>>310
それは明らかになりません。
null文字入れるのは大抵はこっちの役目です。
324:デフォルトの名無しさん
19/05/01 14:41:59.38 yF2N0E1tH.net
>>304
%c は空白文字は入らないのでは?
325:デフォルトの名無しさん
19/05/01 15:19:37.49 pGaFGHQ6a.net
%cは文字は全部入る。
受け付ける文字をはっきりさせたいなら[]使うのがよい。
326:デフォルトの名無しさん
19/05/02 12:01:07.73 oq2ExZVd0.net
printf()のペアっぽいからという理由で
scanf()を使わせる初心者本をこの世から駆逐すべき
327:デフォルトの名無しさん
19/05/02 12:52:42.24 Yg4L14jR0.net
使い方を熟知している人が使う分には問題ないが
「良い子はマネをしてはいけません」の典型だな
328:デフォルトの名無しさん
19/05/02 13:24:17.15 +EePt9KB0.net
初心者はただ値が入力できりゃ楽しいんじゃね
ついでにscanfはかんたんに間違いを引き起こすことが出来るから脆弱性の説明にも使える
このご時世、かんたんに間違いを体験させること自体が難しくなってる
セキュリティが高くなると間違えさせる行動へのコストもまた高くなる
329:デフォルトの名無しさん
19/05/02 15:41:08.09 jQNzLmJja.net
昔のマイコン的なものだと暴走したりしてなお良い。
core dump してるようじゃまだまだ安全過ぎる。
330:デフォルトの名無しさん
19/05/02 19:38:22.59 lQcGaGZC0.net
たしかにscanfが危険なものだと知った時にどうやってfgetsに置き換えるか考えたの思い出した
331:デフォルトの名無しさん
19/05/02 21:18:22.90 H376nx5x0.net
>>287
その数%のアセンブラの部分を、おまえさんは「OS」と呼ぶのか?
332:デフォルトの名無しさん
19/05/02 21:20:29.21 H376nx5x0.net
>>314
scanfの仕様をロクに調べもせず自分の頭で考えもせず
どっかの受け売りを初心者に吹聴する無能老害こそ
この世から駆逐すべきだろうが
333:デフォルトの名無しさん
19/05/02 21:21:11.50 TaSBDpemM.net
>>319
ヨコからスマンけど
そゅ意味じゃないのが
理解できないほどの馬鹿は
ここにくるべきではない
334:デフォルトの名無しさん
19/05/02 21:22:02.02 H376nx5x0.net
>>315
「よい子は真似をしてはいけません」と言われる芸当をやっているプロになろうって人には当てはまらない
335:デフォルトの名無しさん
19/05/02 21:24:27.49 H376nx5x0.net
>>321
おまえさんこそ>>283からの話の流れを読んでるか?
人を馬鹿呼ばわりした自分の発言に責任を持てよ
336:デフォルトの名無しさん
19/05/02 21:25:23.96 H376nx5x0.net
匿名掲示板だから逃げたければ逃げられるが
おまえさんの人間性の問題が変わるわけではない
337:デフォルトの名無しさん
19/05/02 21:34:15.84 TaSBDpemM.net
馬鹿丸だし(笑)
論文ゼロの院生くずれ馬鹿ニート
という雰囲気プンプンだな(爆)
338:デフォルトの名無しさん
19/05/02 21:53:25.96 TlCaXbcx0.net
院生とかめっちゃ高評価じゃんw
俺には大学にコロコロコミックを持ってきて、全ての人間が敵に見えて毎日発狂してた同級生の江○君と被ってしまう。
頭はすこぶる良いんだけど、頭が弱い残念なアイツの雰囲気がプンプン
339:デフォルトの名無しさん
19/05/02 21:55:19.32 H376nx5x0.net
学歴コンプレックスまる出しだな
頭隠して尻隠さずw
340:デフォルトの名無しさん
19/05/02 22:04:26.88 TaSBDpemM.net
院生の意味が理解できない馬鹿(笑)
341:デフォルトの名無しさん
19/05/02 22:05:27.60 TaSBDpemM.net
学歴など無意味
馬鹿は馬鹿(笑)
342:デフォルトの名無しさん
19/05/02 22:06:18.25 BLoepDOP0.net
>>319
何を言いたいのか意味不明w
343:デフォルトの名無しさん
19/05/02 22:22:28.19 H376nx5x0.net
効いてる効いてるw
突然論文ゼロとか言い出すカモは扱いやすすぎ
344:デフォルトの名無しさん
19/05/03 00:28:15.71 ykdjIw3IM.net
#include <stdio.h>
int main(void){
remove("スレリンク(tech板)");
return 0;
}
345:デフォルトの名無しさん
19/05/03 03:22:53.97 l9gwftmb0.net
文字列を消しても実態が消えないのでは
346:デフォルトの名無しさん
19/05/03 07:52:51.95 EnpL9vkxM.net
Cできるけどアセンブラできない、
ってのはCもできないってことだ。
347:デフォルトの名無しさん
19/05/03 09:31:51.08 Adh7HeMA0.net
アセンブラからCに行ったらアセンブラでやってたアルゴリズムがCで表現できなく、非常にもどかしくて・・・
348:
19/05/03 10:16:06.44 ZD3cPA9Q0.net
>>335
それは初耳、いや、どういうのに手こずったのか参考に教えていただけませんか?
349:デフォルトの名無しさん
19/05/03 17:51:44.54 VHrwonhY0.net
出来る出来ないっていう話なら、基本Cできるんじゃないかな。
CPU固有のブルック転送命令とかそんなのを除いて。
(それすら別にできるけどね。)
1命令でできてたことがめんどくさくなるってものならあるかも。
350:デフォルトの名無しさん
19/05/03 18:09:15.33 Mu7G7jjV0.net
アセンブラで作るにしてもでもアルゴリズムで実装しているならCでも出来るんじゃないの?
351:デフォルトの名無しさん
19/05/03 18:10:41.96 3HjiUXGl0.net
プラットフォーム依存の問題は言語じゃなくてコンパイラより下が解決するわけでさ、それをできると言っていいならなんでもできると思うよ。
352:
19/05/03 18:51:30.00 ZD3cPA9Q0.net
>>335
一つ思い出しました、キャリー
353:フラグを活用するアルゴリズムは、そのままでは C でかけずに大変ですね ローテートとかシフトとか
354:デフォルトの名無しさん
19/05/03 19:20:32.29 Qo5d3PXm0.net
>335
キャリーフラグが無くてオーバーフロー/アンダーフロー判定が面倒だとか、
ビットシフトはあってもローテーションが無いとか。
ジャンプ命令使うとパイプラインが初期化されるからなるべく使うなと聞いたのに
逆汗見たらジャンプしまくってるじゃないかとか。
8/16bit時代のアセンブラは1バイト、1ステート削って処理速度稼いでたんで
上記の差を補う処理が無駄に思えて・・・。
かといってインラインアセンブラ使うのはなんか違うと(インライン使うと最適化されないとも聞いてたし)。
それならアセンブラでCから呼べる関数書いた方がすっきりするとか。
20世紀時代のことだ。
355:デフォルトの名無しさん
19/05/03 19:43:11.87 EWn4tN7a0.net
マシン語でコード書いてるときはオンレジスタ思考なのに
当時のCはデフォautoつまりオンメモリなので
ああ、やはりマシン語よりは速度が落ちる言語なんだな
コンパイラ言語とインタプリタ言語のような違いが
もう1つあるんだなって思っていた
356:デフォルトの名無しさん
19/05/03 20:21:30.59 B4eLqFJ00.net
スパゲッティなものを書いてるならともかく、真っ当にサブルーチン化してたら必要悪としてレジスタ志向は早々に諦めてたわ。
局所的に最適化するならそれは別問題として解決してた。
357:デフォルトの名無しさん
19/05/03 20:27:04.09 EWn4tN7a0.net
構造化なんか眼中になかったね
速度こそ純粋で美しい法律だった
358:デフォルトの名無しさん
19/05/03 20:31:26.00 4Ii/FXBd0.net
>>340
> 一つ思い出しました、キャリーフラグを活用するアルゴリズムは、そのままでは C でかけずに大変ですね
それはアルゴリズムと言うより実装の話かと
359:デフォルトの名無しさん
19/05/03 20:52:43.47 EWn4tN7a0.net
PC9801のVRAMを1ドットスクロールさせるのなんか
キャリー使って書いてたのをキャリーなしで書き直させられるのは悲しかった
360:
19/05/03 21:19:31.21 0u/4Gvfl0.net
>>345
>アルゴリズムと言うより実装の話
いや、それは不思議な分類だと思います、DES/AES などはローテート・シフトがそのままアルゴリズムになるのでは?
361:デフォルトの名無しさん
19/05/03 22:27:22.12 4Ii/FXBd0.net
>>347
そのアルゴリズムにキャリーフラグなんて出てこないでしょ?
362:デフォルトの名無しさん
19/05/03 22:32:04.75 EWn4tN7a0.net
アルゴリズムという特定ワードに囚われて用語の定義の話に逸れていくつまらん展開だ
363:デフォルトの名無しさん
19/05/04 04:19:37.51 qzgt3pmZ0.net
文字列入力を受け付けて、それを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文字入力されるまで入力受け付け状態から遷移しない)
どのように改良すればよいでしょうか?
364:デフォルトの名無しさん
19/05/04 05:12:15.70 Yh80Q70x0.net
入力される度に文字のチェックしてみれば。
365:デフォルトの名無しさん
19/05/04 05:15:36.04 eVIwB2YR0.net
>>350
宿題は自分でやれ
366:デフォルトの名無しさん
19/05/04 05:21:50.50 I31OC90J0.net
何故誰もscanf("%c", str[i])に突っ込まないのか
367:デフォルトの名無しさん
19/05/04 05:39:39.99 RAMEL17i0.net
>>350
368:「入力処理」のforループで、「50文字入力されたら」を判定してるけど、 もう一方の終了条件「Enterが押されたら」を判定してないからでしょ。 1文字受け取るごとに、Enter '\n' ならループを抜ける、をやらなきゃ。 というわけで >>315 に至る。 >>353 このスレッドの伝統かと。>>299 以下を参照のこと。 あちらはスルーしたのに、こちらでツッコむのは抵抗感がある、みたいな。
369:354
19/05/04 10:20:54.58 RAMEL17i0.net
誤: というわけで >>315 に至る。
正: というわけで >>351 に至る。
315 を確認したところ、まるっきり見当違いでもなかったね。
370:デフォルトの名無しさん
19/05/04 10:47:02.91 lguQ1Ppja.net
>>354
>>299は見逃していたなあ。空目だな。
371:デフォルトの名無しさん
19/05/04 11:41:09.49 yT0QTmUja.net
>>350
もし宿題が本当に scanf(“%c”,str[i]) と書いてある場合は先生が間違えてるので「 scanf(“%c”, &str[i]) ですよね?」とツッコミを入れてみると良い。
そうすると君はできる学生と思われて成績が上がるるか、または気に入らんやつと思われて成績が下がると思う。
372:デフォルトの名無しさん
19/05/04 13:40:22.89 tOD9kuurM.net
そういえば東大では今でも
C言語が必修なのか?
まじ時代遅れの馬鹿だと思ってたら、
Cしかできない在日の馬鹿教員が
いるのだとか
373:デフォルトの名無しさん
19/05/04 13:51:43.16 k+B84EwL0.net
学歴コンプレックスの人?
374:デフォルトの名無しさん
19/05/04 14:16:41.02 vXlxEQ1E0.net
参照型とか出てくるのにそもそも参照がなにかも理解出来てないにわかオブジェクト指向が増えるよりよっぽどマシよ
なんの言語とは言わないけども
C言語なら理解しなければ先に進まないから
375:
19/05/04 14:19:50.76 7fnHNdb20.net
>>358
C が分からないようでは話にならないのでは?
376:デフォルトの名無しさん
19/05/04 14:47:16.31 tOD9kuurM.net
>>361
トヨタ系の研究所には
Cの分かる研究員がもういないのです
研究には全く支障がないです
組込みやってる高卒やFランが
Cをやるべきでしょ?
377:
19/05/04 14:55:00.73 7fnHNdb20.net
>>362
それは多分ありえない話でしょうね、なぜならば C は計算機言語の基本で、各種書籍ではアルゴリズムの記述に C を使うものが大半ですから
本も読めない人がトヨタの研究者とか、あなたの空想の話なのでは?
378:デフォルトの名無しさん
19/05/04 15:22:49.59 Yh80Q70x0.net
アルゴリズムの勉強はpythonがいいよ
379:
19/05/04 15:25:54.07 7fnHNdb20.net
>>364
python で二分木の実装とかできますか?
380:デフォルトの名無しさん
19/05/04 16:05:03.07 Yh80Q70x0.net
>>365
できますん
381:デフォルトの名無しさん
19/05/04 16:07:19.80 LvYM7SOrM.net
>>365
そんなのはFランの仕事でしょ?
382:デフォルトの名無しさん
19/05/04 16:13:20.77 8Q7/PMC20.net
論文の次はFランか、哀れだなw
383:デフォルトの名無しさん
19/05/04 16:49:12.48 vXlxEQ1E0.net
やっぱり相当コンプレックスの塊で頭悪いんだろうなぁ
384:
19/05/04 18:28:05.43 7fnHNdb20.net
>>366
本当ですか?ポインタがない python では無理なんじゃないですか!?
385:デフォルトの名無しさん
19/05/04 18:39:36.30 yT0QTmUja.net
pythonって参照ないの?
386:デフォルトの名無しさん
19/05/04 18:43:01.66 gINSNBZZa.net
真面目に言うとpythonは基本的に全部参照渡しだね。
参照したものを直接いじれるかというとそうでない場合があるけども。
387:
19/05/04 19:05:41.64 7fnHNdb20.net
>>372
なるほど、ではユーザー定義の型は自動的に参照扱い、すなわち Java みたいなかんじなんですね
であれば苦労すれば二分木を実装できますね、大変失礼いたしました
388:はちみつ餃子
19/05/04 19:18:51.61 21Of2ELD0.net
>>370
Python に限らず動的型の言語の多くは変数に値を入れるんじゃなくて、
オブジェクトと変数の間に束縛 (bind) を作ることで成り立ってる。
辿ることでオブジェクトを参照するんだ。 実質的にポインタだよ。 むしろポインタしかない。
(小さい値 (小さい数値とか文字とか) はアロケーションを抑制するためにそのまま
ワードに突っ込むような最適化をする言語 (処理系) もあるけども。)
389:
19/05/04 20:22:17.94 7fnHNdb20.net
>>374
Java ならば boxing でヒープにとる値とスタックに取る値とをある程度(意識せずに)変換できますね(そういう C/C++ like な意識が皆無ではない、という意味)
ただし、二分木に関してはいいたいことがまだあって、「本物の」二分木は二重ポインタ(ポインタのポインタ)が必要なのではないか?と思っています
さすがに Java には二重ポインタはない、そんな用途の言語じゃない
Python や ruby にはあるのでしょうか?
390:デフォルトの名無しさん
19/05/04 20:55:58.63 cZ5M6KFWa.net
二重ポインタを何に使う?
Cだと引数でノードのオブジェクトを返す辺りか?
391:
19/05/04 21:01:18.06 7fnHNdb20.net
>>376
ノードを追加する関数add の引数を
add(&root, Object)
ってするでしょ?&root ってことは、struct *node のアドレス、すなわち struct node ** が必要なのではないかと
392:デフォルトの名無しさん
19/05/04 21:43:09.25 cZ5M6KFWa.net
>>377
わからんが、Cでも戻り値でポインタを返せばいいんじゃないか?
393:はちみつ餃子
19/05/04 21:46:08.02 21Of2ELD0.net
>>375
参照を持つオブジェクトへの参照を持てるんだから、事実上の二重ポインタとして使えるよ。
394:デフォルトの名無しさん
19/05/04 21:57:52.42 8Q7/PMC20.net
二重までは使うんだよなあ
三重をなぜ使わないか、説明できるか?w
395:デフォルトの名無しさん
19/05/04 22:09:57.55 RtDHzLy60.net
ガベージコレクションと裸のポインタって相性が悪いような
396:デフォルトの名無しさん
19/05/04 22:15:35.23 eVIwB2YR0.net
>>378
2個返したい時とか、戻り値は成功かどうかのコードを返したいとか
397:デフォルトの名無しさん
19/05/04 23:07:46.23 cZ5M6KFWa.net
道はいろいろあると思うが、せっかくあるんだから構造体使って皆くるんじゃえと思うよ。
398:デフォルトの名無しさん
19/05/05 00:20:41.66 nwgMKC8Ra.net
微妙にスレチのように思うので続きはJava初心者のスレでやった方が良いのではないか?
まあ人に聞かなくても Java を勉強して Java の API のソースを読めばそういうのをどうしているのかは何れわかると思うけどね。
399:デフォルトの名無しさん
19/05/05 00:21:53.66 tvdtPjB+0.net
Ruby での、Jaggy 配列は、
ary = [ ] # 配列の配列
ary.push [ "a" ]
ary.push [ 1, 2 ]
p ary #=> [["a"], [1, 2]]
C/C++ 以外のたいていの言語では、数字などのprimitive 以外は、すべて参照。
(primitiveは参照にするよりも、その場所へ値を埋め込んだ方が速い)
外側の配列は、内側の配列の参照を持っている。
内側の配列は、(primitive以外の)各要素の参照を持っている
primitive以外は、コピーしても参照がコピーされるだけで、値はコピーされない。
つまり、同一インスタンスを指す。
別のインスタンスは作られない
new されていなければ、インスタンスは作られない。
代入しただけでは、参照がコピーされるだけ
これを、shallow copy (浅いコピー)と呼ぶ(同一インスタンス)。
new して、別のインスタンスを作ることを、deep copy (深いコピー)と呼ぶ(別のインスタンス)
400:デフォルトの名無しさん
19/05/05 00:37:14.86 RPhfdkos0.net
>>385
馬鹿は消えろ
401:
19/05/05 08:54:51.63 3EWrT4Pn0.net
>>378
それは無駄な代入が発生するでしょう?
402:
19/05/05 09:01:10.92 3EWrT4Pn0.net
>>380
余裕で三重ポインタなどほいほいと使いますよ
スレリンク(tech板:26番)
void prep_exe(char *sttp, char **path, char ***argv)
char **argv を使うことが理解できるのだったら「argv のアドレスを渡す」みたいな場合に渡された関数側では三重ポインタを使うことになるでしょう
403:デフォルトの名無しさん
19/05/05 09:04:36.94 hoO1o10+0.net
>>388
それcodepadだろ? 使いさえすればいいって話じゃなくて
404:
19/05/05 09:08:14.08 3EWrT4Pn0.net
>>389
無論使いさえすればいい、というわけではなく、この例では小さなシェルを実装しており、シェルのパイプ機能を実装するのに三重ポインタを使ったのです
405:デフォルトの名無しさん
19/05/05 09:21:39.41 2T/oydys0.net
>>387
引数を介すと代入が減るってこと?
406:
19/05/05 09:47:47.39 3EWrT4Pn0.net
>>391
代入命令が増えるという意味ではなく、「同じ値」なのに代入してしまう、という作業が >>378「戻り値でポインタを返」す方式の書き方だと不可避です
407:デフォルトの名無しさん
19/05/05 10:05:07.93 bV6goPu10.net
呼び出しの前後で、ptrの値が 同じかもしれない、場合よっては変わるかもしれない関数
ptr = func1(ptr, opt); と func2(&ptr, opt);
うーんどっちも使うな…
408:デフォルトの名無しさん
19/05/05 10:28:11.80 2T/oydys0.net
>>392
じゃあ、一時変数に代入しとけば?
409:
19/05/05 10:29:23.05 3EWrT4Pn0.net
>>393
前者
>ptr = func1(ptr, opt);
は初心者用で、>>392 のいう無駄な代入が含まれています、二重ポインタがわかるのなら後者にするべきです
410:
19/05/05 10:30:14.08 3EWrT4Pn0.net
>>394
シンプルな記述ができるのに、わざと複雑な書き方にするのは問題なのでは?
411:デフォルトの名無しさん
19/05/05 10:32:32.58 2T/oydys0.net
>>396
じゃあ、戻り値そのまま使えば?
mallocは使うんでしょ?
412:
19/05/05 10:33:46.84 3EWrT4Pn0.net
>>397
その場合無駄な代入が発生しますね、>>393 がいい例を示しています
413:デフォルトの名無しさん
19/05/05 10:35:01.06 bV6goPu10.net
エラー伝達に NULL を使う realloc は即代入するとお漏らししちゃうし
あれ、なん引数書き戻しにしなかったんだろう? 素朴な疑問
414:デフォルトの名無しさん
19/05/05 10:35:57.12 2T/oydys0.net
>>398
代入されているのかされていないのか、わからない方が良いってこと?
415:デフォルトの名無しさん
19/05/05 10:36:08.55 bV6goPu10.net
×あれ、なん引数書き戻しに
○あれ、なんで引数書き戻しに
416:デフォルトの名無しさん
19/05/05 10:41:29.60 2T/oydys0.net
>>399
正直、nullが来た時点で終わってるしなあ…。
まあでも一時変数使うのが筋だと思いますよ。戻り値でも引数でも同じこと。
417:
19/05/05 11:25:51.36 3EWrT4Pn0.net
>>400
ちがいます
代入するのか代入しないのかは malloc() したかしなかったかにかかっています。
代入は malloc() したとききだけにすればよく それが >>393 の func2(&ptr, opt); の書き方
一方 >>393 ptr = func1(ptr, opt); は malloc() したかしないかにかかわらず代入を行います、これは無駄な代入を含みます
418:デフォルトの名無しさん
19/05/05 11:31:24.71 2T/oydys0.net
>>403
だから、関数の内部的に何してるのかわからんのが良いってことじゃない?
419:
19/05/05 11:37:36.53 3EWrT4Pn0.net
>>404
着目点はそこにはありません。関数による記述で内部を隠蔽するのが目的ではありません
問題は、malloc() したときだけ代入し、malloc() しなかったときには代入しない、という記述を正確にかけるかどうか…①、にかかっており
>>393 ptr = func1(ptr, opt); は①を記述できる可能性が皆無、一方
>>393 func2(&ptr, opt); は①を記述できる可能性がある、というわけです
420:デフォルトの名無しさん
19/05/05 11:38:01.66 orE8GGyod.net
>>393
前者の方が好ましい
2重ポインタなんて最適化の妨げになるものは、それしか使えない場面でのみ使うべき
421:
19/05/05 11:44:46.28 3EWrT4Pn0.net
>>406
非常に大きな二分木(ノートが1億個)があって、そのはるか先端で malloc() してそこで代入すればいいだけなのに、
その先端から root に戻ってくる途中の3
422:0箇所ほどで、軒並み全部のノードで「必要のない無駄な代入」をするのですか? >それしか使えない場面でのみ使うべき この二分木を実装する、というのがまさしく「それしか使えない場面」なのですよ
423:デフォルトの名無しさん
19/05/05 11:45:42.03 2T/oydys0.net
>>405
つまり、後者でmallocしてnullが返った時はそれを代入するってことですか?同じじゃん。
424:デフォルトの名無しさん
19/05/05 11:47:06.67 2T/oydys0.net
>>407
二分木のコストってのは比較であって代入じゃないと思いますよ。
まあアルゴリズムの一般論としては。
425:
19/05/05 11:53:15.92 3EWrT4Pn0.net
>>408
>>393 func2(&ptr, opt); では
malloc() して null が返ってきたときは、例えば何もしない、ということはできますね
でも >>393 ptr = func1(ptr, opt);
は、malloc() しようがしまいが代入してしまいますね、これは「やる必要のない無駄な代入」が含まれることになり、好ましくないです
>>393 ptr = func1(ptr, opt); の記述法は二分木を最初に習うときに、この記述法で理解を促すという意味では有用であっても、
いつまでもこれで書いているようでは進歩していない、もっといえば怠惰である、と考えています
426:
19/05/05 11:55:53.32 3EWrT4Pn0.net
>>409
しかし無駄な代入を放置してよいというわけではないでしょうね、削れるところは削るべきです
単純二分木よりさらに改良された平衡二分木(AVL木、赤黒木等)を紹介する書籍では、最初から >>393 func2(&ptr, opt); で記述されていますよ
427:デフォルトの名無しさん
19/05/05 11:57:28.30 2T/oydys0.net
>>410
じゃあ隠蔽しろという話なんじゃないの?
関数の中で成功失敗を判定して外にnullは返すな入力時のままにしとけ、という関数。
428:デフォルトの名無しさん
19/05/05 11:58:36.27 2T/oydys0.net
>>411
代入回数比較してよ。頼むよ。
429:
19/05/05 12:05:45.99 3EWrT4Pn0.net
>>412
ちがいますね
問題は、malloc() したときだけ代入し、malloc() しなかったときには代入しない、という記述を正確にかけるかどうか…①、にかかっています。
>>413
>>407 に書いておきました、1億ノードの二分木にて各ノードが最適に配置されているとして、削ることのできる代入は malloc() 一回に対して 30 個の代入になります
>>393 ptr = func1(ptr, opt); では 1億ノードの二分木にノードを追加する際、30個の無駄な代入が発生します
代入のコストは大したことがない、にしても、アルゴリズムを正確に記述できないのは問題ですね
洗練された記述とはそういうものではないでしょうか
430:デフォルトの名無しさん
19/05/05 12:48:51.19 2T/oydys0.net
>>414
いや、mallocがnull返した時はいれないんでしょ?
成功か失敗かじゃないの?呼んだかどうかじゃなくて。
431:デフォルトの名無しさん
19/05/05 12:52:54.83 2T/oydys0.net
仕事では戻り値に成功失敗が入ってオブジェクトのポインタは引数に来るような関数は使うけどさ、
結局どっちもチェックするよ。信じられねえもんな。
432:
19/05/05 13:12:30.38 3EWrT4Pn0.net
>>415
malloc() が成功したか失敗したかは、今の話には関係ありません
今関係があるのは、
malloc() したときだけ代入し、malloc() しなかったときには代入しない、という記述を正確にかけるかどうか…①
です
433:デフォルトの名無しさん
19/05/05 13:42:25.11 2T/oydys0.net
>>417
じゃあ、絶対代入するってことだろうよ。
引数に渡したポインタに。ポインタを。
434:
19/05/05 13:51:49.48 3EWrT4Pn0.net
>>418
malloc() したときは代入しますよ、でも malloc() しないときは代入なんかせず、そのまま呼び出し元に返るだけです
それが>>393 ptr = func1(ptr, opt); 方式と絶対的に違うのです
435:デフォルトの名無しさん
19/05/05 13:55:35.88 2T/oydys0.net
>>419
戻り値はvoidってこと?
436:
19/05/05 14:02:45.71 3EWrT4Pn0.net
>>420
>>393 func2(&ptr, opt); 式なら void もありえます
437:デフォルトの名無しさん
19/05/05 14:08:06.37 2T/oydys0.net
>>421
いや、必須なのでは?
438:
19/05/05 14:11:38.90 3EWrT4Pn0.net
>>422
いいえ、実際に実装するならば、エラーを伝達する手段として返り値を準備することは大いにありえるでしょうね
void が必須ではありません
必要な代入なら使えばいい、でも
>>393 ptr = func1(ptr, opt);
方式は不必要な代入があり、単に二重ポインタを使用して記述すればこれは除去できるので、
>>393 ptr = func1(ptr, opt);
を書くのは問題だし、これを書く人は頭を使っていない、と判断します
439:デフォルトの名無しさん
19/05/05 14:33:08.37 bV6goPu10.net
異常は戻りをNULLにするパティーンで
node_t *func3(node_t**, ...)
正常だった場合に ptr = func3(&ptr, opt); と書けるしw (無駄な努力の可能性
440:デフォルトの名無しさん
19/05/05 14:34:34.27 bV6goPu10.net
って書いたけど鼻から悪魔踏みそうな嫌らしさがあるな…
441:
19/05/05 15:03:58.07 3EWrT4Pn0.net
>>424
そのパターンでは、異常値 NULL をうっかりノードに登録してしまうと、そのノードより下が浮いてしまい危ないですね、ま、異常系をミスったままリリースしてしまうことも私はよくやりますけど
442:デフォルトの名無しさん
19/05/05 15:42:24.13 8x8syc+Fa.net
>>423
いや、必須でしょ?代入消せるんだから。消さないと。
443:
19/05/05 17:54:28.38 3EWrT4Pn0.net
>>427
言葉尻を捕らえて攻めたつもりになっているようですね
「すべての代入を消去できる」なんていってませんよね
>>393 ptr = func1(ptr, opt);
この代入は不要な代入を含むので、
>>393 ptr = func1(ptr, opt);
は不適当な書き方だ、とこれまで首尾一貫して述べているのです
444:デフォルトの名無しさん
19/05/05 18:13:23.13 bV6goPu10.net
423の文意は
「void が必須なわけではなく
引数と同じ型のポインタを戻すことはせずに、別の目的の何か、たとえばエラーコードとして int を戻す
なんてのはアリでしょ?」
ってことだと思うけど
445:デフォルトの名無しさん
19/05/05 18:42:49.42 dOx23ziba.net
returnしちゃだめでしょ
代入が駄目ってくらいだから
446:デフォルトの名無しさん
19/05/05 18:56:43.02 bV6goPu10.net
「代入不要なケースでも代入記述を要求するのはよろしくない」スタイルの延長だと
戻り値評価も破棄可能ならそうすべき って話か
447:
19/05/05 19:00:00.98 3EWrT4Pn0.net
>>430
どんな代入もだめだとは主張していませんね…
>>393 ptr = func1(ptr, opt);
方式は不必要な代入があり、単に二重ポインタを使用して記述すればこれは除去できるので、
>>393 ptr = func1(ptr, opt);
の代入が駄目だとはいってきていますけれども
448:はちみつ餃子
19/05/05 19:03:30.45 TxpPZKKr0.net
>>407
449:はちみつ餃子
19/05/05 19:13:46.27 TxpPZKKr0.net
あ、ごめん、ミスって文章を書く前に投稿してもうた。
>>407
あらためて確認するが、この代入を「無駄」としているのはアルゴリズムの表現の上では不要なことをしているという
意味の上での無駄であって、性能上の無駄という意味ではないんだね?
そして、アルゴリズムを正しく表現する上では (ときには二重・三重のも含めて) ポインタが必要だと。
450:
19/05/05 20:16:09.59 3EWrT4Pn0.net
>>434
>性能上の無駄という意味ではないんだね?
性能の上で分析するとなると、間接参照にてデータをロード、ストアするコストと値をストアするコストを天秤にかける、ことになりますね
なるほど、その点を言いたくて、でも言いたくなくて、しつこく絡んでいたのですか…
私は二重ポインタでの表現の方がトータルでお得だ、とは思ってはいますが、これまで表に出ている私の発言は、あえてそこには踏み込まず(だって性能の話はうかつに断言できませんからね…)、
おっしゃるとおり「アルゴリズムの表現の上では不要なことをしている」に留まっています
451:はちみつ餃子
19/05/05 20:57:45.43 TxpPZKKr0.net
>>435
たとえば数学上の表記なら「A=1 であり B=1 のとき A=B は真である」と「1=1 は真である」には何も差が無い。
途中で名前を付けるのは人間に対する便宜であって、無駄な「操作」は存在しない。
代入が無駄たりうるのは C のパラダイムだからなので、
「C で表現するにはポインタが必要だし、代入では不適当だ」は事実であっても
「ポインタが無い言語では表現できない」というわけではないよ。
C の低級な世界でまともな意味論を表現しようとするのがそもそもの間違いだろう。
452:
19/05/05 21:02:18.49 3EWrT4Pn0.net
>>436
>「ポインタが無い言語では表現できない」というわけではないよ。
それは理解しています、なぜなら
Java での二分木の実装を検討したことがある(探せば2ch過去ログにあるかもしれません)
Java にはポインタはありませんが、実装できるかできないか、といえば「できる」の方に入りますね
453:はちみつ餃子
19/05/05 21:54:26.85 TxpPZKKr0.net
>>437
そこまでわかっているのなら、
「代入しない」と「同じ値を代入しなおす」が意味論的に等しいということがどうしてわからないんだ。
454:デフォルトの名無しさん
19/05/05 23:34:40.25 RXFRr1FQ0.net
C言語のプログラム内で確保していいメモリってユーザー空間の仮想メモリ上限いっぱいまで取っていいの?
複数の変数a, b, c, ・・・の値を表示するだけのプログラムを時系列に並べて考えてみるんだけど
0. 実行ファイルを起動する
1. 32bitプロセスが生成される ←たとえば32bit windowsだとユーザー空間とカーネル空間で計4GBの仮想メモリが確保される
2. int a; ←仮想メモリ(1で確保されたユーザー空間)上にaが確保される
int b; ←上に類似
int c; ←上に類似
・・・・・(複数の変数の宣言やprintf関数が続く)
こんな感じなんだろうけど
上記の2でユーザー空間いっぱいになるまで変数を宣言してもいいの?
455:はちみつ餃子
19/05/05 23:38:14.20 TxpPZKKr0.net
>>439
いいけど、もっと効率的な方法があるならそれに越したことは無いっていうそれだけの話
456:デフォルトの名無しさん
19/05/05 23:41:29.98 RXFRr1FQ0.net
簡潔に書くと
安全のためにはどこまでメモリを使っていいの?
そのメモリの大きさはユーザー空間の上限と同じなの?
という室問なのに長くなってしまた
457:デフォルトの名無しさん
19/05/05 23:47:50.76 RXFRr1FQ0.net
>>440
ありがとう
ただ初心者なので効率性を目指すにはきつい部分が出てくる
そうなるとメモリの残量を監視する、つまり残量の値を取得する必要があるわけだけど
これは一般的にはwindowsのAPIを使うのが普通なの?
(そんなものがあるのかは知らない)
458:デフォルトの名無しさん
19/05/05 23:52:54.47 RPhfdkos0.net
>>442
スタックとヒープという概念は知ってる?知らなければまずそれを調べてみて。
それと、初心者なら効率を求める前に正しくメモリ管理を扱えるようになる必要があるが、その時点で残量は気にする必要はないぞ。
459:デフォルトの名無しさん
19/05/05 23:59:16.82 RXFRr1FQ0.net
FIFOだとかナントカ程度にしか。
「~~領域」という幾つかの用語がOSとかの環境が違っても
全く共通のものなのかよく分からないから正直スルーしてる
460:デフォルトの名無しさん
19/05/06 05:38:27.60 wr9bFPpT0.net
>>414
>1億ノードの二分木にノードを追加する際、30個の無駄な代入が発生します
2^10 = 約1,000 千
2^20 = 約1,000,000 百万
2^30 = 約1,000,000,000 十億
>>441
Java VM の初期値は、256MB とか。
それよりも大きいと強制終了されるが、起動時に、512MBに設定できる
たぶん、4GB の仮想メモリでも、ユーザー空間3GB・カーネル空間1GBぐらいだろ
それ以上のデータは、動画みたいにstream になる。
バッファサイズ、例えば、1MB を読んでは捨てて、次の1MB読んでは捨てて、の繰り返し
読み込んだデータを使ったら、すぐに捨てないといけない。
ユーザー空間に、空きを作らないといけない
461:デフォルトの名無しさん
19/05/06 06:20:53.21 Geq8Gq1G0.net
>>445
いつものRubyバカだろ。いい加減な知識でC言語のメモリの話題に口を挟むのはやめろ。この板になれている者からすれば「またいつものか...」ですむが、初心者にとっては害悪でしかないから消えろ。
462:デフォルトの名無しさん
19/05/06 06:25:32.64 Geq8Gq1G0.net
>>444
組み込みとかの特殊な環境では例外もあるけど、基本的には環境によらずC言語で必須の概念だからスルーせずにちゃんと調べるべき。
463:デフォルトの名無しさん
19/05/06 08:39:59.60 s1ulBxFy0.net
>439
>上記の2でユーザー空間いっぱいになるまで変数を宣言してもいいの?
他のプロセスがスワップ起こして重くなるから止めろって言いたい。
464:デフォルトの名無しさん
19/05/06 10:14:49.95 Om5TJBQR0.net
>>447
うん調べてみるよ
ありがとう
>>448
そんな視点もあるのか
他のプロセスも考慮しないといけない
思ったよりも数段以上やっかいだな
465:デフォルトの名無しさん
19/05/06 10:19:59.43 Om5TJBQR0.net
>読み込んだデータを使ったら、すぐに捨てないといけない
データをガンガン読み込んでいくようなプログラムだと「使ったらすぐ捨てる」のが鉄則か
466:デフォルトの名無しさん
19/05/06 10:40:24.77 F7BEaxMm0.net
>>439
ユーザープロセスなのでカーネル空間はマッピングされないよ。プロセス管理のための領域はカーネル空間に多少は確保されるとは思うけど、それはユーザープロセス用ではないし。
ページサイズの関係で効率的に確保できるかどうかは別問題だけど仮想メモリ領域いっぱいまで取れるか否かと言えば取ることはできる。
実際にそんなことしたらスワップ発生しまくりでまともに動かないとは思うけど。
467:デフォルトの名無しさん
19/05/06 12:43:21.39 53K/0wkW0.net
実装としてはだいたいcopy on writeだから、確保だけだったら特に問題発生しないよ
468:デフォルトの名無しさん
19/05/06 16:08:26.90 95XsbNbMM.net
>>451
どのOSなのか明示してくれ。
少なくともlinux 32bitは3GB以降はkernel空間にマッピングされてるだろ
469:デフォルトの名無しさん
19/05/06 21:20:46.06 lSipB+Y80.net
配列にある16進数アスキーを
整数型変数に数値として入れたいのですが、上手くいきません。
valの値をprintfで出力しても「0」になります。
rbuf[5]の中身は「0xDC」
rbuf[6]の中身は「0x18」でした。(printfで出力してみたところ。)
#include <stdio.h>
unsigned char sbuf[255] = {'\0'}; //送信バッファ
unsigned char rbuf[255] = {'\0'}; //受信バッファ
unsigned char work[10] = {'\0'}; //ワークバッファ
unsigned int val = 0; //値
work[0]=rbuf[5];
work[1]=rbuf[6];
work[2]='\0';
sscanf((char *)work, "%x", &val);
よろしくお願いします。
470:デフォルトの名無しさん
19/05/06 21:29:36.69 v87Zm/5a0.net
sscanf の %x は、文字列で記述された数字+アルファベットの列を 16進数として抜き出す
sscanf("10", "%x", &val); → val の値は 10進で16 となる
0xDC 0x18 の並びから どういう整数値にしたいんだろうか?
471:454
19/05/06 21:38:34.55 lSipB+Y80.net
>>455
回答ありがとうございます。
val=0xDC18
という感じで取り出したいです。
472:デフォルトの名無しさん
19/05/06 21:40:18.62 v87Zm/5a0.net
>>456 それなら
val = rbuf[5]; じゃあかんの?
473:454
19/05/06 21:50:08.40 lSipB+Y80.net
>>457
ありがとうございます。そういうことか・・・
下記で上手くできました!
val= rbuf[5];
val = val << 8;
val |= rbuf[6];
474:デフォルトの名無しさん
19/05/06 21:54:12.13 v87Zm/5a0.net
>>458 解決してよかったね
0xDC 0x18 の並びから
(最低でも32bit長の整数)0xDC18 が欲しかったということだね
475:デフォルトの名無しさん
19/05/06 21:55:43.20 v87Zm/5a0.net
(俺がちゃんと >>456 を読めてなかった説 val=0xDC18 って書いてるやんけw)
476:デフォルトの名無しさん
19/05/06 22:06:19.06 NYoOX9LAa.net
>>454
> rbuf[5]の中身は「0xDC」
> rbuf[6]の中身は「0x18」でした。(printfで出力してみたところ。)
だったらそれはASCIIではないよね。
477:デフォルトの名無しさん
19/05/06 22:08:02.81 NYoOX9LAa.net
などと、ゆっくり書いていたら既に解決か・・・
478:デフォルトの名無しさん
19/05/06 22:09:16.82 lSipB+Y80.net
>>460
>>461
ありがとうございます。
お陰様で解決できました。
勝手にASCII、文字列と勘違いしていたのがよくなかったです。
479:デフォルトの名無しさん
19/05/07 06:48:35.98 /Z9tG+PY0.net
ASCII は、7 bit キャラだろ
欧州文字コードなら、8 bitとか
480:デフォルトの名無しさん
19/05/07 15:31:36.79 gGAOuhJk0.net
BASIC時代 文字→文字コード変換関数が ASC(文字) だったな。
481:デフォルトの名無しさん
19/05/08 20:11:19.53 w7dyIR3e0.net
逆はCHR$(コード)だったな。
482:デフォルトの名無しさん
19/05/08 22:02:13.36 LqpjdKM80.net
「なんで朝潮?」と思ってしまった当時の俺w
483:デフォルトの名無しさん
19/05/09 08:32:10.12 IVg2TokP0.net
わらってよりとも というのは、当時の人気番組名をもじったものだよ
484:デフォルトの名無しさん
19/05/09 12:40:11.38 J26JobOx0.net
URLリンク(ae01.alicdn.com)
485:デフォルトの名無しさん
19/05/09 20:40:23.75 axmpki24M.net
「はじめてのC」なら買う
486:デフォルトの名無しさん
19/05/09 22:18:17.14 fgRKvhjn0.net
その本の名前、買うときに恥ずかしいw
487:デフォルトの名無しさん
19/05/09 23:03:35.49 vEdVh+9n0.net
質問です
文字列の配列
char matrix[Y][X]を関数に引数として渡して、渡した先の関数でtxtファイルに出力したい。
YとXはその時々によって違う値でmatrixは文字列の配列だけど1行ごとに'\0'が入っていないとき、渡した先の関数でYとXをどうやれば参照できますか?
例えば
matrix = {{‘a’, ‘b’, ‘c’}, {‘d’, ‘e’, ‘f’}};
みたいな配列です
488:デフォルトの名無しさん
19/05/10 00:00:40.06 IBOrEgMWa.net
X(配列のサイズ)を共有してやればいいんじゃないかな
489:デフォルトの名無しさん
19/05/10 00:14:05.05 Ojl9YgLP0.net
>>472
matrixのアドレスと共にX、Yの値を渡さないと無理
490:デフォルトの名無しさん
19/05/10 03:11:16.60 +vHN15fT0.net
>>472
URLリンク(qiita.com)
491:デフォルトの名無しさん
19/05/10 09:26:09.21 bwAvNWKg0.net
>>474
やっぱり配列のサイズ一緒に渡さないとだためですか
492:デフォルトの名無しさん
19/05/10 09:44:04.32 0Zlxa6bHa.net
そう。他の言語だと裏でこっそり渡すようになっていたりしてプログラムに書かなくても動くかも知れないが、Cはそこまでやってくれない。
493:デフォルトの名無しさん
19/05/10 10:05:05.80 hw8N8wYC0.net
標準関数も一次元配列ですら大きさを渡してるからねー
(文字列は '\0' が終端である という了解を持って大きさを不要にしているだけ)
494:デフォルトの名無しさん
19/05/10 12:34:03.34 zZfQYrbwd.net
>>475
URL張って解党した気になってるアスペルガーのカスがスレ来んな
495:デフォルトの名無しさん
19/05/10 23:50:49.39 svzEPJh90.net
え?読んでもわからなかったの?
496:デフォルトの名無しさん
19/05/11 07:43:24.28 glRpLuyC0.net
確かにつまらんね
リンクだけとかググレカスとか
せっかく掲示板にいるのに対話がないのは
497:はちみつ餃子
19/05/11 09:55:06.58 GtXmrqj00.net
>>481
リンクを示すのも、ググればわかるようなことにググれというのも対話だよ。
対話を終わらせてるのはお前だろ。
リンク先を見て意味がわからんかったならどうわからなかったか、
よりよい説明があると思うならそれを示してもいい。
望むことだけ欲しいというのは対話とは言えんよ。
498:デフォルトの名無しさん
19/05/11 10:34:34.75 glRpLuyC0.net
>>482
話が噛み合ってない
おまえさんとは平行線のようだな
499:デフォルトの名無しさん
19/05/11 11:46:55.45 0ygzdBDA0.net
ID:glRpLuyC0が対話する気なさすぎて草w
500:デフォルトの名無しさん
19/05/11 12:23:55.76 9iCvmH6s0.net
ここは質疑を行うスレであって
対話したり、雑談したりする場ではない
501:デフォルトの名無しさん
19/05/11 19:10:51.09 HOBfdmGr0.net
Cの上位互換(?)として、C++がありますが。C++は覚えた方がいいですか?
もしくは、CとC++を両方覚えたら、Cは不要になり、C++でコードを書くようになりますか?
C++でできることはCでもできるように見えますので、ならCだけでいいようにも思えたり。
502:
19/05/11 19:18:54.28 KtHZQgR00.net
>>486
C++ は最近規格の改定がすすみ、いろんなことが C++ の枠内でできるようになりました
503:デフォルトの名無しさん
19/05/11 19:21:03.92 2v2BzL6t0.net
>>486
言っておくが、python,C++,Java,javascript,C#,shellでできる事はC言語でも出来る
更に君が作ろうとしてるものや、やりたいことは、もう誰かが作ってる
ましてや大規模になると、googleとかamazonと戦う羽目にもなる
それが嫌ならプログラミングなんて辞めとけ
504:デフォルトの名無しさん
19/05/11 19:32:35.19 HOBfdmGr0.net
>>487-488
了解です、ありがとうございます
505:デフォルトの名無しさん
19/05/11 21:07:19.81 glRpLuyC0.net
>>484-485
482は反対意見を述べているという意味でまだいいところがあったが
てめーらは一方的な押しつけしか頭にない100%真のノイズだ
506:はちみつ餃子
19/05/11 21:28:03.11 GtXmrqj00.net
>>490
既に解説があると示すのも質問に対する回答として十分だし、それで不満な理由がまるでわからん。
それが対話でないと断言するのも意味がわからん。
結局のところどうして欲しいの?
507:デフォルトの名無しさん
19/05/11 22:15:36.12 YLmnNEXIa.net
きっと寂しいんだよ。
508:デフォルトの名無しさん
19/05/11 22:49:22.08 glRpLuyC0.net
>>491
意味がわからんからどうした?
平行線の相手に何か言って欲しいのか?
509:はちみつ餃子
19/05/12 10:19:15.38 l86zXz3/0.net
>>493
そう決めつけて続きを拒むなら「一方的な押し付けしか頭にない」「対話がない」というまさにそれでしかなくね?
意味がわからんから解説してくれっての。
わからんことを理解する必要があるから対話になるんだろ。
510:デフォルトの名無しさん
19/05/12 11:22:06.40 VeGHf8Lz0.net
>>494
自分の言葉で何か言えよと思う俺の意見を
おまえ真っ向から全否定しただろ
だから接点がないと判断したんだ
接点があるなら最初の態度を撤回しろ
話はそれからだ
511:デフォルトの名無しさん
19/05/12 11:57:36.56 7nn+3/Jt0.net
>>495
意見を全否定って、そりゃ異なる意見があるのは当然だろう。異なる考えなら議論にならないなんて、議論する気が無いだけだろう。
ついでだが、俺もお前さんの意見には反対だ。自分の言葉で書くかはまったく重要ではないと思う。お手軽に書ける掲示板のレスは言葉足らずだったり不正確な表現なことも多々あるが、それよりきちんと纏まった情報をリンクされた方がありがたいことも多い。
512:デフォルトの名無しさん
19/05/12 12:19:14.09 VeGHf8Lz0.net
>>496
意見が異なるのと全否定は違うぞ
自分はこう思うと述べるのと
おまえは間違っているというのの違いだ
よくいるんだよ、どっかからの受け売りを壊れたレコードみたいに繰り返すだけなやつとか
俺は自分の知見からは何も出てこないのかよと思うことがあるが
おまえはそれで満足なら勝手に満足してろよ
そこが俺とおまえの違いだな
513:デフォルトの名無しさん
19/05/12 15:34:15.26 SbCKIsfP0.net
質問です
テキストファイルから文字を1文字ずつ読み込んでchar型の2次元配列matrixに入れていきたい。
この時改行は配列に入れたくないときどうすれば良いですか?
うまくいかないコード
for (i=0;i<10;i++) {
for (j=0;j<10;j++) {
if (fgetc(fp) == ‘\n’) {
continue;
}
matrix[i][j] = fgetc(fp);
}
}
テキストファイルは行数と列数があらかじめ分かってるとして
例えば
AAAAAAAAAA
BBBBBBBBBB
…
のようなファイルです
514:デフォルトの名無しさん
19/05/12 15:51:11.62 L7lYUohVa.net
fgetc二回呼びたいの?
515:デフォルトの名無しさん
19/05/12 16:10:46.32 7kDDqNbD0.net
>>498
continueだと内ループ先頭に戻るから違うんじゃないの
516:デフォルトの名無しさん
19/05/12 16:24:47.11 R31sKZyy0.net
>>498
.for ... {
. for ... {
. char c = fgetc(fp);
. if (c != '\r' && c != '\n') {
. m
517:atrix[i][j] = c; . } . } .}
518:デフォルトの名無しさん
19/05/12 17:12:05.74 SbCKIsfP0.net
>>499
呼ばなくていいです
>>501
これでもうまくいかないです
519:経団連
19/05/12 17:22:08.08 uLUIsoqa0.net
for (i=0;i<10;i++) {
for (j=0;j<10;j++) {
matrix[i][j] = fgetc(fp);
}
fgetc(fp); //読み捨て
}
520:デフォルトの名無しさん
19/05/12 17:29:14.22 CrklWm7I0.net
変な例出すなよ…
521:デフォルトの名無しさん
19/05/12 17:29:29.19 gzai7Rgq0.net
サイズが固定なら fread でよくない?
そうすべきというほどのものでもないだろうが。
522:デフォルトの名無しさん
19/05/12 17:35:10.27 x4ccFx6b0.net
>>498
「うまくいかない」症状を見れば、もう少し見当がつくんだけど…。
格納先の配列を char matrix[LINES][CHRS]; とか定義して、
printf("%s\n", matrix[n]); で表示してるの違うかな。
各行の文字列の末尾にあるべき '\0' が格納されてない、みたいな。
523:デフォルトの名無しさん
19/05/12 17:36:33.22 JjryTeWM0.net
2重ループやめても良いか?
while (1) {
int c = fgetc(fp);
if (c == EOF) {
break;
}
if (c == '\n') {
continue;
}
matrix[i][j] = c;
j++;
if (j == 10) {
i++; j = 0;
}
}