!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
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/
※前スレ
C言語なら俺に聞け 154
https://mevius.5ch.net/test/read.cgi/tech/1578997950/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 155
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 76ba-P5bm)
2020/05/10(日) 23:20:27.99ID:Z3WQBr9X0358デフォルトの名無しさん (ワッチョイ 3fad-p8b5)
2020/06/27(土) 21:54:01.50ID:YxSvZ5UV0 あ、そうだ。昔の BASIC がそれだったな。今もそうか。
359デフォルトの名無しさん (ワッチョイ 7f63-htoQ)
2020/06/27(土) 22:14:52.03ID:8IoNpLP20 Fortranも駄目だった気がする
360デフォルトの名無しさん (ワッチョイ ff8c-ZANo)
2020/06/27(土) 22:45:34.92ID:3uU6UKGu0 iZ-Cで頑張っている方々もいる。
361デフォルトの名無しさん (ワッチョイ 3f01-76DX)
2020/06/27(土) 22:52:26.39ID:Fil4ka9J0362デフォルトの名無しさん (ワッチョイ 3fad-p8b5)
2020/06/27(土) 23:11:39.40ID:YxSvZ5UV0 ま、しかし、本当なら代入は全く違う記号(あるいはワード)使って欲しいところではある。
昔々中学生の頃に初めてBASICのリストを見て A = A + 1 ってなんじゃこりゃと思った事あるし。
普通の数学や算数とルールが違っているのに同じであるかのような記号の使い回しで混乱w
昔々中学生の頃に初めてBASICのリストを見て A = A + 1 ってなんじゃこりゃと思った事あるし。
普通の数学や算数とルールが違っているのに同じであるかのような記号の使い回しで混乱w
363デフォルトの名無しさん (ガラプー KKb3-hH/T)
2020/06/27(土) 23:17:49.21ID:WNNU6Y/YK それ小学生のとき見たからすんなり入ってきた
方程式とは違うよってご丁寧に書いてあったし混乱はなかった
方程式とは違うよってご丁寧に書いてあったし混乱はなかった
364デフォルトの名無しさん (ワッチョイ 3f85-NJGG)
2020/06/27(土) 23:24:19.62ID:zYxBmbbI0 >a = b = 0:
BASICじゃ
bが0なら a=-1
bが0でないなら a=0
だっけ。
BASICじゃ
bが0なら a=-1
bが0でないなら a=0
だっけ。
365デフォルトの名無しさん (アウアウエー Sabf-TUf5)
2020/06/27(土) 23:37:39.31ID:fF6t87uZa そっか、そのとき b = 0 は代入文じゃなくて、値を持つ比較式ですね
文法は間違いでした
文法は間違いでした
366デフォルトの名無しさん (アウアウエー Sabf-TUf5)
2020/06/27(土) 23:38:09.75ID:fF6t87uZa 文法エラーは間違いでした
でした
でした
367デフォルトの名無しさん (ワッチョイ 8f46-rLul)
2020/06/28(日) 00:32:47.05ID:akwdxVh60 =は代入が比較より使用頻度が高いので、2文字(=:)が代入だと地味に面倒そう。
368デフォルトの名無しさん (ワッチョイ 3f01-76DX)
2020/06/28(日) 07:11:45.70ID:4OGtUBl/0 >>362
APLお勧め
APLお勧め
369デフォルトの名無しさん (ワッチョイ ff8c-ZANo)
2020/06/28(日) 11:47:20.61ID:vGhSDCc20 iZ-Cに反応しないのは素人か。
370デフォルトの名無しさん (ワッチョイ 3f0e-NJGG)
2020/06/28(日) 17:12:13.76ID:8Xgo7zrJ0 >>368
今のAPLはつまんなくなったね
今のAPLはつまんなくなったね
371デフォルトの名無しさん (ワッチョイ 0fda-5fXH)
2020/06/28(日) 21:51:57.49ID:kMbOl++G0 変数名を文字列で取得したいんだけど どうしたらいいかな
printfデバッグとかで、 printf("hogehoge=%d\n",hogehoge); ってやるじゃん?
これをちょっとだけ効率よくしたいけど、マクロでどうにかならん?
printfデバッグとかで、 printf("hogehoge=%d\n",hogehoge); ってやるじゃん?
これをちょっとだけ効率よくしたいけど、マクロでどうにかならん?
372はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0f3e-NJGG)
2020/06/28(日) 21:54:48.80ID:Iks3cRKy0 >>371
マクロ定義のときは識別子に # を付けると識別子を文字列扱いできる。
マクロ定義のときは識別子に # を付けると識別子を文字列扱いできる。
373蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 8f01-c0lz)
2020/06/28(日) 22:04:34.55ID:2DMHRA/z0 #define POUT(x) printf("%s = %d\n", #x, (x))
こんな感じ?
こんな感じ?
374蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd5f-Oc0l)
2020/06/28(日) 22:18:47.05ID:dcZQFZ1fd #define POUT(x) printf(#x " = %d\n", (x))
こっちの方がいいか?
こっちの方がいいか?
375デフォルトの名無しさん (ワッチョイ 0f01-5fXH)
2020/06/28(日) 22:53:44.96ID:HzcxpANJ0 文字列リテラルの連結は滅多に使わないけど盲点というか
わかってて使うには良いものだね
"aaaa" "bbbb" → "aaaabbbb" として解釈される
わかってて使うには良いものだね
"aaaa" "bbbb" → "aaaabbbb" として解釈される
376デフォルトの名無しさん (ワッチョイ 7f63-htoQ)
2020/06/28(日) 22:57:59.33ID:qWBhd30v0377デフォルトの名無しさん (ワッチョイ 4f7f-Tpb5)
2020/06/28(日) 23:05:22.34ID:sygO1Ih/0 usage表示したいときとか普通に使うわ
378デフォルトの名無しさん (スプッッ Sddf-WMoV)
2020/06/29(月) 00:09:50.35ID:eubxXrdwd 私も普通に使う
379デフォルトの名無しさん (ワッチョイ 8f01-/Fs/)
2020/06/29(月) 01:27:56.70ID:C/fQS0GP0 viがバグるのでやめてください。
380デフォルトの名無しさん (ワッチョイ cf05-NJGG)
2020/06/29(月) 08:55:46.03ID:UQIGysI+0 vimはバグらないぞ
381デフォルトの名無しさん (JP 0H43-R4wo)
2020/06/29(月) 08:57:31.19ID:y9Ww1t9/H もしかして: vim
382デフォルトの名無しさん (ワッチョイ 3f0e-NJGG)
2020/06/29(月) 08:58:42.61ID:nBP9TntY0 vimじゃないviには長年世話になったもんだ
383デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/29(月) 13:35:04.89ID:rjGVLU620384デフォルトの名無しさん (エムゾネ FF5f-qwRG)
2020/06/29(月) 15:01:50.53ID:fw2IFdDxF and が & と &&
or が | と ||
という具合に bit 演算用と論理演算用で演算子が違いますが
bit 演算の xor は ^ で
int a = 123, b = 456;
のとき a^b と描けますが
論理式の xor はどう描けばいい?
bool u = true, v = true;
のとき u^v と描いても問題無いですか?
or が | と ||
という具合に bit 演算用と論理演算用で演算子が違いますが
bit 演算の xor は ^ で
int a = 123, b = 456;
のとき a^b と描けますが
論理式の xor はどう描けばいい?
bool u = true, v = true;
のとき u^v と描いても問題無いですか?
385デフォルトの名無しさん (ワッチョイ 0fda-pW1u)
2020/06/29(月) 15:17:39.29ID:TPMqgpKl0 (u != v) で良いのでは?
386デフォルトの名無しさん (エムゾネ FF5f-qwRG)
2020/06/29(月) 15:25:14.45ID:fw2IFdDxF bool に 0 と !0 以外が入ってても大丈夫ですか?
387デフォルトの名無しさん (エムゾネ FF5f-qwRG)
2020/06/29(月) 15:27:23.97ID:fw2IFdDxF もし御存じの方がいらっしゃったらで良いのですが
"u ^^ v" みたいな演算子が無い理由も知りたいです
問題後出しで済みません
"u ^^ v" みたいな演算子が無い理由も知りたいです
問題後出しで済みません
388デフォルトの名無しさん (JP 0H43-R4wo)
2020/06/29(月) 15:37:10.60ID:y9Ww1t9/H ビットごとのxorは暗号とかで多用するけど、
論理式のxor(一方のみ真)はめったに使わないからかと。
!u != !v が最小かな。
論理式のxor(一方のみ真)はめったに使わないからかと。
!u != !v が最小かな。
389デフォルトの名無しさん (エムゾネ FF5f-qwRG)
2020/06/29(月) 15:41:17.96ID:fw2IFdDxF ありがとうございました
390デフォルトの名無しさん (ワッチョイ 3f0e-NJGG)
2020/06/29(月) 16:32:31.26ID:nBP9TntY0 関係演算子の結果はint型の1か0なんだから
a < 124 ^ b < 456 でもいいはず
a < 124 ^ b < 456 でもいいはず
391デフォルトの名無しさん (ワッチョイ 0fda-vVPI)
2020/06/29(月) 17:07:26.21ID:TPMqgpKl0 C99以降のbool型(_Bool型)の値はfalse(0)とtrue(1)のどちらかしか取り得ない
変数や式の評価が0以外の場合はすべて1に変換される
評価結果の値が不明の場合はbool型にキャストすると良い
(bool)u != (bool)v
変数や式の評価が0以外の場合はすべて1に変換される
評価結果の値が不明の場合はbool型にキャストすると良い
(bool)u != (bool)v
392はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0f3e-NJGG)
2020/06/29(月) 17:12:09.58ID:vApDDB4S0 イディオムとしては !! を付ける (否定を二回やる) というのもよく知られている。
(見づらいので良くないという意見もある。)
(見づらいので良くないという意見もある。)
393デフォルトの名無しさん (ワッチョイ 3f0e-NJGG)
2020/06/29(月) 17:19:40.81ID:nBP9TntY0 !!は厨二病臭くて俺はあんまりやらないが
この程度で読みづらいとか言い出すスキル不足なやつに迎合する意図は毛頭ない
この程度で読みづらいとか言い出すスキル不足なやつに迎合する意図は毛頭ない
394デフォルトの名無しさん (ワッチョイ 0fda-vVPI)
2020/06/29(月) 17:24:25.71ID:TPMqgpKl0 適当サンプルプログラム
https://i.imgur.com/OgY6Qcz.png
https://i.imgur.com/OgY6Qcz.png
395デフォルトの名無しさん (スップ Sddf-WMoV)
2020/06/29(月) 17:44:20.33ID:1Lbf5C9Kd 0, !0 意外の値が入ってた場合にどんな結果を期待するかによる
396デフォルトの名無しさん (ワッチョイ 8f46-rLul)
2020/06/29(月) 17:55:06.30ID:I0J8qHbO0 禅問答かよ。
397デフォルトの名無しさん (ワッチョイ 3f01-76DX)
2020/06/29(月) 19:26:41.50ID:xaDJZCCE0398デフォルトの名無しさん (JP 0Hbf-EqIm)
2020/06/29(月) 19:30:21.97ID:rBtTXcyIH C言語に使ってるエディタとかIDEとか教えてください
OSとかの環境もあるとありがたい
OSとかの環境もあるとありがたい
399デフォルトの名無しさん (スップ Sddf-WMoV)
2020/06/29(月) 19:31:22.68ID:JUEjBXx8d EDLIN
400デフォルトの名無しさん (ワッチョイ 8fe6-vKxb)
2020/06/29(月) 19:59:21.99ID:x9/2kcfz0 >>398
C言語を何に使うかによって全然違うと思うけど
C言語を何に使うかによって全然違うと思うけど
401デフォルトの名無しさん (スップ Sddf-WMoV)
2020/06/29(月) 20:00:40.16ID:JUEjBXx8d 何に使うかでそんなに変わるか?
402デフォルトの名無しさん (アウアウエー Sabf-PKxn)
2020/06/29(月) 20:03:09.44ID:6d9dL1u1a C言語でエンドルフィンの造出をアヘアヘ
404デフォルトの名無しさん (ワッチョイ 0f01-5fXH)
2020/06/29(月) 20:13:09.53ID:o6pktO+O0 学習用途で ideone や codepad 規模で済むなら Webブラウザ
405デフォルトの名無しさん (ワッチョイ 0fda-vVPI)
2020/06/29(月) 20:21:56.62ID:TPMqgpKl0406はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0f3e-NJGG)
2020/06/29(月) 20:23:46.01ID:vApDDB4S0 >>398
OS: Windows10
コンパイラ: gcc と clang (msys2 の pacman で入るやつ)
その他に Open Watcom C とか LCC (LSI-C じゃなくて Little C Compiler ね) とか
エディタ: Emacs
OS: Windows10
コンパイラ: gcc と clang (msys2 の pacman で入るやつ)
その他に Open Watcom C とか LCC (LSI-C じゃなくて Little C Compiler ね) とか
エディタ: Emacs
407デフォルトの名無しさん (ワッチョイ 8fe6-vKxb)
2020/06/29(月) 20:24:01.34ID:x9/2kcfz0 初学の時、H8に書くとき、arduinoに書くとき、それぞれ全部違ったわ。
408デフォルトの名無しさん (ワッチョイ 8f14-5Vex)
2020/06/29(月) 21:14:11.50ID:Gzb8Tiox0409デフォルトの名無しさん (ワッチョイ ff8c-ZANo)
2020/06/29(月) 21:49:44.45ID:uavgiC7w0 適切な問題とヒントが一番大事。
410デフォルトの名無しさん (ワッチョイ 3f0e-NJGG)
2020/06/30(火) 06:48:50.33ID:W+MWiusu0 >>398
秀丸
秀丸
411デフォルトの名無しさん (ワッチョイ cf2c-wMgy)
2020/06/30(火) 07:20:47.85ID:ojYrCHBE0 漏れは、Windows 10, WSL, Ubuntu 18.04 で、
VSCode の拡張機能、Remote WSL も使う
Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を、build-essential で、コンパイルして入れた
yarn は、Windows側に入れて、WSL から、拡張子なしのyarn コマンドを呼べる。
これは、#!/bin/sh で始まるシェルスクリプト
anyenv は多言語向きで、rbenv, nodenv, pyenv, phpenv などを同じ使い方で、統一的に扱える
build-essential には、
gcc(GNU C compiler), g++(GNU C++ compiler), libc6-dev(GNU C Library), make などが入っています
パッケージ: build-essential
https://packages.ubuntu.com/ja/bionic/build-essential
VSCode の拡張機能、Remote WSL も使う
Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を、build-essential で、コンパイルして入れた
yarn は、Windows側に入れて、WSL から、拡張子なしのyarn コマンドを呼べる。
これは、#!/bin/sh で始まるシェルスクリプト
anyenv は多言語向きで、rbenv, nodenv, pyenv, phpenv などを同じ使い方で、統一的に扱える
build-essential には、
gcc(GNU C compiler), g++(GNU C++ compiler), libc6-dev(GNU C Library), make などが入っています
パッケージ: build-essential
https://packages.ubuntu.com/ja/bionic/build-essential
412デフォルトの名無しさん (ラクッペペ MM4f-pW1u)
2020/06/30(火) 11:26:03.93ID:Xg3HKp34M build-essential以外はC言語には関係ないな
413デフォルトの名無しさん (ワッチョイ ab7b-06wU)
2020/07/02(木) 09:18:11.06ID:1XrTO7+60 Cに限らず汎用で使える開発環境で色々やってるってことかと。
俺も基本的にはvimとmakeで何でもやる。
vimの中でとりあえず :make と打ってQuickFix機能でエラー修正。
上手く拾ってくれない時は ~/.vimrc で errorformat 変数に追加。
>>398 の人はOSも知りたいってことなので追加。
Linuxのウィンドウ環境使わないコンソールでfbterm(日本語表示用)。
ツール類はディストリビューションに入ってた奴。
俺も基本的にはvimとmakeで何でもやる。
vimの中でとりあえず :make と打ってQuickFix機能でエラー修正。
上手く拾ってくれない時は ~/.vimrc で errorformat 変数に追加。
>>398 の人はOSも知りたいってことなので追加。
Linuxのウィンドウ環境使わないコンソールでfbterm(日本語表示用)。
ツール類はディストリビューションに入ってた奴。
414デフォルトの名無しさん (JP 0H42-2vAA)
2020/07/06(月) 17:38:55.00ID:6O25/+p5H int main (void)
{ char a[256];
printf("Enter a string:");
scanf("%s", a);
(以下略)
勉強中に上のような「キーボード入力からchar型配列に文字列を格納する」という処理を見かけました
この例だと(ヌル文字含め)256文字以上の文字が入力されたときはその後の処理が正常にできなくなりますよね
現実的には値を充分大きく指定しておけば問題はないのでしょうが、入力された文字数に応じて要素数を適切に設定したりはできないのでしょうか?
{ char a[256];
printf("Enter a string:");
scanf("%s", a);
(以下略)
勉強中に上のような「キーボード入力からchar型配列に文字列を格納する」という処理を見かけました
この例だと(ヌル文字含め)256文字以上の文字が入力されたときはその後の処理が正常にできなくなりますよね
現実的には値を充分大きく指定しておけば問題はないのでしょうが、入力された文字数に応じて要素数を適切に設定したりはできないのでしょうか?
415はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6b3e-VQSO)
2020/07/06(月) 17:43:57.76ID:Js6m+wFY0416デフォルトの名無しさん (ワッチョイ 2705-VQSO)
2020/07/06(月) 19:26:19.29ID:y838Udr90417デフォルトの名無しさん (ワッチョイ 1e63-BXkI)
2020/07/06(月) 19:39:29.44ID:A/JwDwXO0 後続処理で問題が起きる
418デフォルトの名無しさん (ワッチョイ 2fb3-mf8G)
2020/07/06(月) 19:40:44.58ID:X9mxW4kC0 a[255]=0;
419デフォルトの名無しさん (ワッチョイ 6a77-VQSO)
2020/07/06(月) 20:42:40.45ID:sDUgop1M0 scanfは入力ミスでへんな無限ループに陥ったことがあるからなぁ。
420デフォルトの名無しさん (ワッチョイ 2fb3-mf8G)
2020/07/06(月) 20:45:13.65ID:X9mxW4kC0 それはscanfの問題?
421デフォルトの名無しさん (ワッチョイ 6a77-VQSO)
2020/07/06(月) 20:50:02.85ID:sDUgop1M0 入力バッファに改行が残って云々ってことらしい。
422デフォルトの名無しさん (ワッチョイ 0a0e-VQSO)
2020/07/07(火) 06:45:34.69ID:hl3O6vw80 scanfの問題ではないね
!=EOFなんて書くバカが100%悪い
!=EOFなんて書くバカが100%悪い
423デフォルトの名無しさん (ラクッペペ MMc6-fHqu)
2020/07/07(火) 07:24:10.77ID:stuZ2AfxM 入力バッファに残った改行コードが問題の場合は fflush(stdin) で吐き出さないとどうにもならない
424デフォルトの名無しさん (ワッチョイ ab7b-06wU)
2020/07/07(火) 07:43:16.74ID:bJbvn87/0 fflush() が確実に効くのは出力ストリームだけでしょ。
stdin でも使える独自拡張された環境もあるか知れんけど。
stdin でも使える独自拡張された環境もあるか知れんけど。
425デフォルトの名無しさん (ワッチョイ 1ed2-VQSO)
2020/07/07(火) 07:54:27.38ID:p6ZLMZTk0 scanf前にバッファクリアするコードあったけど、
そういうやつってパイプやリダイレクトつかっても正常作動するの?
そういうやつってパイプやリダイレクトつかっても正常作動するの?
426デフォルトの名無しさん (ラクッペペ MMc6-06wU)
2020/07/07(火) 11:09:20.23ID:qR67pRFEM パイプやリダイレクトか判定する方法がOSによって提供されてる環境なら問題ない
427はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6b3e-VQSO)
2020/07/07(火) 12:04:22.54ID:tzlORGl20 方法が用意されててもそれをきちんと利用してるソフトが少なかったら意味ないぞ。
428デフォルトの名無しさん (スッップ Sdaa-mf8G)
2020/07/07(火) 12:19:33.35ID:/8q6WRwjd scanfをそのまま不特定多数が使うソフトに入れることなんかないんだから
正しく入力してください
で終わる
正しく入力してください
で終わる
429デフォルトの名無しさん (スップ Sd4a-xROu)
2020/07/07(火) 13:58:40.76ID:OPOprIbsd scanfを何に使うかという話と
仕様を理解して使うという話は
別問題だ
仕様を理解して使うという話は
別問題だ
430デフォルトの名無しさん (エムゾネ FFaa-A0XE)
2020/07/07(火) 14:00:00.91ID:092JXqIfF431デフォルトの名無しさん (ワッチョイ ab7b-06wU)
2020/07/07(火) 16:19:53.16ID:bJbvn87/0 scanf には * の指定子ないんだわ。
432デフォルトの名無しさん (アウアウウー Sacf-Im8i)
2020/07/07(火) 18:32:30.56ID:e1WbjzO/a * には別の意味がある。
433デフォルトの名無しさん (ワッチョイ 6b01-Wiu6)
2020/07/07(火) 19:29:43.35ID:USscR6RS0 引き数から引っ張ってくる * がないとなると
sprintf で scanf フォーマット文字列を作るということになる?のか?
sprintf で scanf フォーマット文字列を作るということになる?のか?
>>423
それは環境依存
それは環境依存
435431 (ワッチョイ 857b-4PPV)
2020/07/08(水) 06:21:59.38ID:sJ2uy93A0 >>432
scanf の * 書式指定子は「読み捨て」の指示だったね。
printf の * とは使い方が違うけど、ちゃんとある。
…存在をすっかり忘れてたよ。ありがとう。
>>433
カーニハン&パイクの『プログラミング作法』には
sprintfで書式指定文字列を作る方法が載ってるね。
下に示す例に比べれば手軽で分かりやすい。
入力文字幅がコンパイル時固定ならマクロを駆使して…
// マクロ名を「マクロの内容を表す文字列」に変換するマクロ関数
#define MACRO_TO_STR_SUB(name) #name
#define MACRO_TO_STR(name) MACRO_TO_STR_SUB(name)
#define WIDTH 15 // 入力制限字数(末尾の'\0'を含まない)
char buf[WIDTH+1]; // +1 for '\0'
scanf("%" MACRO_TO_STR(WIDTH) "s", buf);
こんな感じにできるけど、面倒でしょ。
scanf の * 書式指定子は「読み捨て」の指示だったね。
printf の * とは使い方が違うけど、ちゃんとある。
…存在をすっかり忘れてたよ。ありがとう。
>>433
カーニハン&パイクの『プログラミング作法』には
sprintfで書式指定文字列を作る方法が載ってるね。
下に示す例に比べれば手軽で分かりやすい。
入力文字幅がコンパイル時固定ならマクロを駆使して…
// マクロ名を「マクロの内容を表す文字列」に変換するマクロ関数
#define MACRO_TO_STR_SUB(name) #name
#define MACRO_TO_STR(name) MACRO_TO_STR_SUB(name)
#define WIDTH 15 // 入力制限字数(末尾の'\0'を含まない)
char buf[WIDTH+1]; // +1 for '\0'
scanf("%" MACRO_TO_STR(WIDTH) "s", buf);
こんな感じにできるけど、面倒でしょ。
436デフォルトの名無しさん (ワッチョイ 230e-ucCN)
2020/07/08(水) 06:35:08.91ID:SF9V14yC0 char fmt[(size_t)floor(log10(~(size_t)0) + 1) + 3];
char buf[256];
sprintf(fmt, "%%%llus", sizeof buf - 1);
scanf(fmt, buf);
char buf[256];
sprintf(fmt, "%%%llus", sizeof buf - 1);
scanf(fmt, buf);
437デフォルトの名無しさん (エムゾネ FF43-VqvP)
2020/07/08(水) 09:30:02.93ID:hADFKHguF438デフォルトの名無しさん (ワッチョイ 230e-ucCN)
2020/07/08(水) 10:07:58.22ID:SF9V14yC0 単項#はマクロの中でしか使えない
439デフォルトの名無しさん (エムゾネ FF43-VqvP)
2020/07/08(水) 10:11:35.43ID:hADFKHguF #define MACRO_TO_STR(name) #name
そもそもこれもだめなんですね
そもそもこれもだめなんですね
440デフォルトの名無しさん (ワッチョイ 230e-ucCN)
2020/07/08(水) 10:34:21.44ID:SF9V14yC0 んなわけねえだろ
なんでやねん
なんでやねん
441デフォルトの名無しさん (ワッチョイ cb63-56/R)
2020/07/08(水) 10:59:20.81ID:g3a6T0uX0 後でメンテが大変だぞ
半年経ったら、今の自分が他人になる
半年経ったら、今の自分が他人になる
442デフォルトの名無しさん (JP 0H93-4zP6)
2020/07/08(水) 11:22:06.26ID:woPNJQ5aH IT掲示板群 ttp://x0000.net/forum.aspx?id=15
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン(画像有り)
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0
☆ VMを書いた(C#) * x86ではない!
ttp://up.x0000.net/files/TSimulang.zip
☆ malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン(画像有り)
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0
☆ VMを書いた(C#) * x86ではない!
ttp://up.x0000.net/files/TSimulang.zip
☆ malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
443デフォルトの名無しさん (ワッチョイ cb69-6wWl)
2020/07/08(水) 11:45:14.69ID:KKQXIGLi0 #define WIDTH 10
#define MACRO_TO_STR(name) #name
MACRO_TO_STR(WIDTH)
は渡された識別子をそのまま文字列化するので "WIDTH" になる
マクロWIDTHを展開した後での文字 "10" が欲しいときは >>435 のように
一見無駄に見えるマクロのピンポンを行なう
#define MACRO_TO_STR(name) #name
MACRO_TO_STR(WIDTH)
は渡された識別子をそのまま文字列化するので "WIDTH" になる
マクロWIDTHを展開した後での文字 "10" が欲しいときは >>435 のように
一見無駄に見えるマクロのピンポンを行なう
444デフォルトの名無しさん (スップ Sd03-rJjo)
2020/07/08(水) 11:48:56.64ID:l8qeRlOJd x0000.netをNGっと
445デフォルトの名無しさん (ワッチョイ 230e-ucCN)
2020/07/08(水) 12:22:54.79ID:SF9V14yC0 ああ、そういうことか
解説dx
解説dx
446デフォルトの名無しさん (ワッチョイ 35e6-ucCN)
2020/07/08(水) 13:27:10.12ID:0ZaAZSr60 >>428
その「正しく入力してください」に至らないのが今回の話題
その「正しく入力してください」に至らないのが今回の話題
447デフォルトの名無しさん (ワッチョイ 2301-65sm)
2020/07/08(水) 16:37:27.08ID:mO8IXR2n0 >>444
まだやってなかったのか?
まだやってなかったのか?
448デフォルトの名無しさん (スップ Sd43-Tflg)
2020/07/08(水) 17:48:03.59ID:T5O+XOTRd449デフォルトの名無しさん (ワッチョイ a5da-1Cui)
2020/07/08(水) 18:06:49.38ID:EQ9tLW1C0 不正入力ではなくてコンソールと入力バッファの仕様が問題
標準入力stdinがキーボードの場合入力バッファには目的とする文字コードの直後に必ず改行コードが残る
scanfの書式が%dなどの数値型だと改行は取り込まれないので数値型を連続して使用した場合は型が合わずに続くデータを取りこぼす
標準入力stdinがキーボードの場合入力バッファには目的とする文字コードの直後に必ず改行コードが残る
scanfの書式が%dなどの数値型だと改行は取り込まれないので数値型を連続して使用した場合は型が合わずに続くデータを取りこぼす
450デフォルトの名無しさん (ワッチョイ 230e-ucCN)
2020/07/08(水) 18:11:07.83ID:SF9V14yC0 ん、%dは先行する空白類文字をスキップするぞ
451デフォルトの名無しさん (ワッチョイ 0db3-Tflg)
2020/07/08(水) 18:25:39.71ID:QndvSIjd0 >>449
正しい入力で正しく動かないならそれはバグだよ
正しい入力で正しく動かないならそれはバグだよ
452デフォルトの名無しさん (ワッチョイ a5da-1Cui)
2020/07/08(水) 18:29:27.69ID:EQ9tLW1C0 訂正
たしかに数値型だけなら問題はないね
数値型と文字型の混在時に問題が起きる
scanf("%d", &x); // 数値 + 改行
...
scanf("%c", &y); // 必ず直前の改行となるので入力不可
...
scanf("%d", &z); // 数値 + 改行
たしかに数値型だけなら問題はないね
数値型と文字型の混在時に問題が起きる
scanf("%d", &x); // 数値 + 改行
...
scanf("%c", &y); // 必ず直前の改行となるので入力不可
...
scanf("%d", &z); // 数値 + 改行
453デフォルトの名無しさん (アウウィフ FF09-VqvP)
2020/07/09(木) 09:32:01.69ID:vrNDocOmF 無理にscanf使わずに
fgetsとsscanfやろ
fgetsとsscanfやろ
454デフォルトの名無しさん (ワッチョイ 230e-ucCN)
2020/07/09(木) 09:45:13.42ID:jzluGOwX0 またアホが湧いた
455デフォルトの名無しさん (ワッチョイ 23ad-Bqa1)
2020/07/09(木) 09:51:17.63ID:RjpwDZh+0 Windows10proでC使いたいんです。
目的は大量のテキストデータの変換なので、
グラフィックとか音とかはプログラミングしません。
テキストでコーディングして、
CUIで実行ってな感じができればいいんですけど、
このぐらいだとMinGWが適当なんでしょうか?
目的は大量のテキストデータの変換なので、
グラフィックとか音とかはプログラミングしません。
テキストでコーディングして、
CUIで実行ってな感じができればいいんですけど、
このぐらいだとMinGWが適当なんでしょうか?
456デフォルトの名無しさん (ワッチョイ ad7c-jFjK)
2020/07/09(木) 09:57:12.39ID:uQo6bqoB0 tdm-gcc
457デフォルトの名無しさん (ワッチョイ 23a5-T5iX)
2020/07/09(木) 09:57:39.86ID:f5aLRaXK0458デフォルトの名無しさん (ワッチョイ 233d-Bqa1)
2020/07/09(木) 10:57:01.79ID:g1m/M0Pb0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 国民 居住目的でない住宅所有者に「空室税」課せる法案を提出 [少考さん★]
- 国民 居住目的でない住宅所有者に「空室税」課せる法案を提出 ★2 [少考さん★]
- 「働いて働いて」の流行語大賞に懸念 「言葉が独り歩き」 過労自殺遺族 [尺アジ★]
- アメリカ、入国時に「日本人を含む外国人観光客の最大5年分のSNS履歴の提出」義務化へ 過去10年間に使用のメールアドレスや電話番号等も★3 [Hitzeschleier★]
- 【画像】消えた美人女優 上原多香子さん(42)、沖縄で目撃される [牛丼★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は ★2 [蚤の市★]
- ファッション専門家「高市さんの服装は完璧100点です。」💯 [153490809]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★1
- 【悲報】 世界最大級のポルノサイトPornHubの日本人ユーザーの年齢層、ヤバ過ぎる [303493227]
- きたくしたのだ
- 高市早苗、森元総理の愛人だった [347751896]
- 【高市朗報】中国、歴史上日本に一度も侵攻したことがない親日国だった [931948549]
