!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C17
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.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言語なら俺に聞け 159
https://mevius.5ch.net/test/read.cgi/tech/1659623547/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 160
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ ff63-dxp0)
2022/12/28(水) 10:40:30.02ID:PyoNDBFu0683デフォルトの名無しさん (スップ Sd9a-67MV)
2023/03/12(日) 12:23:09.80ID:/+cwNiL3d 京都府警りょうのキンタマ
684はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f93e-S+nL)
2023/03/12(日) 14:34:58.81ID:zw46Mo410 使われているソースコードはおそらくこれということらしい。
https://github.com/loadletter/Winny-p2p
>>678
ちゃんと考証するならそりゃそうだが
重要でないところに小ネタを仕込むのもよくあることでしょ。
https://github.com/loadletter/Winny-p2p
>>678
ちゃんと考証するならそりゃそうだが
重要でないところに小ネタを仕込むのもよくあることでしょ。
685デフォルトの名無しさん (スププ Sd9a-ISeG)
2023/03/12(日) 14:38:15.75ID:36zMid+Td686デフォルトの名無しさん (アウアウエー Sa22-MAiJ)
2023/03/13(月) 11:21:17.63ID:bF2IN6wDa >あんなコードのはずがない
47氏死んでからの映画化ならではだな
47氏死んでからの映画化ならではだな
687デフォルトの名無しさん (スップ Sd9a-9LRx)
2023/03/13(月) 15:53:24.36ID:gUMqyWwJd ジョブスの映画はもっと酷かったぞ
ウォズがこれがアップルIだ!っつってジョブズに見せると画面にアスキーコード順に文字が出てくるだけ
ジョブズがオオスゲーって顔するんだけどw
もっともそこですでにBASICやゲームの画面が出てくるのもおかしいんだけどな
ウォズがこれがアップルIだ!っつってジョブズに見せると画面にアスキーコード順に文字が出てくるだけ
ジョブズがオオスゲーって顔するんだけどw
もっともそこですでにBASICやゲームの画面が出てくるのもおかしいんだけどな
688デフォルトの名無しさん (ワッチョイ a163-DvKe)
2023/03/13(月) 20:33:15.11ID:ZWncv4YS0 CALL -151
689デフォルトの名無しさん (ワッチョイ 1910-mIEw)
2023/03/13(月) 21:56:22.40ID:sKLW0uN10 >>687
脇役で出てくるPCの時代考証がおかしかったりしたあれか
脇役で出てくるPCの時代考証がおかしかったりしたあれか
690デフォルトの名無しさん (ワッチョイ 7aad-JIpj)
2023/03/14(火) 01:18:17.67ID:eWxvxvkk0 >>687
その映画見てないので分からないが、もしや Apple ][ ではなく Apple I のこと?
だったらワンボードマイコンなのでテレビ画面に文字が出るだけでも当時は凄い事だったと思うが。
Apple I が作られたのは1976年だしな。
その映画見てないので分からないが、もしや Apple ][ ではなく Apple I のこと?
だったらワンボードマイコンなのでテレビ画面に文字が出るだけでも当時は凄い事だったと思うが。
Apple I が作られたのは1976年だしな。
691デフォルトの名無しさん (ワッチョイ d6cf-mIEw)
2023/03/14(火) 03:06:45.91ID:TJZO9aGD0 もしやもクソも誰もApple2の話なんかしてないと思うがキミはいつもそんな調子なのかね
692デフォルトの名無しさん (スププ Sd9a-cOGZ)
2023/03/14(火) 09:46:34.46ID:tHJOYlO8d ごく初歩的な質問です 変換して指定子を何にすればよいか教えてください
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
int id;
char ss[80];
strcpy(ss,"123");
id = atoi(ss);
printf("%d\n", ss);
return 0;
}
を実行するとでデタラメな数字が出力されます。
変換して指定子をなににすればよいのでしょうか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
int id;
char ss[80];
strcpy(ss,"123");
id = atoi(ss);
printf("%d\n", ss);
return 0;
}
を実行するとでデタラメな数字が出力されます。
変換して指定子をなににすればよいのでしょうか?
693デフォルトの名無しさん (スププ Sd9a-cOGZ)
2023/03/14(火) 09:57:04.49ID:tHJOYlO8d 692です 解けました 寝ぼけていたみたいです
694デフォルトの名無しさん (ワッチョイ 6d5f-zj+m)
2023/03/14(火) 10:05:55.26ID:3kN/fw0O0 %dとか%sとかの呼び方って、変換指定子、書式指定子、フォーマット指定子のどれがいいんすか?
695デフォルトの名無しさん (スププ Sd9a-cOGZ)
2023/03/14(火) 10:12:18.85ID:tHJOYlO8d ある本によると、たんなる、「変換仕様」や「出力変換仕様」となってます
696デフォルトの名無しさん (ワッチョイ 6d5f-zj+m)
2023/03/14(火) 10:34:18.75ID:3kN/fw0O0 printfで出力変換仕様ならscanfでは入力変換仕様になりそうっすね
697デフォルトの名無しさん (ワッチョイ 6d5f-zj+m)
2023/03/14(火) 10:38:03.93ID:3kN/fw0O0 英語だとformat specifierなんすね
直訳ならformat→フォーマットか書式、specifier→指定子か仕様って感じすか
直訳ならformat→フォーマットか書式、specifier→指定子か仕様って感じすか
698デフォルトの名無しさん (ワイーワ2 FF62-hM7q)
2023/03/14(火) 11:19:53.02ID:VNqhYyU8F699デフォルトの名無しさん (ワイーワ2 FF62-hM7q)
2023/03/14(火) 11:22:04.60ID:VNqhYyU8F700デフォルトの名無しさん (スププ Sd9a-cOGZ)
2023/03/14(火) 13:01:28.77ID:dwJIt/jSd >>699 警告出てました vscodeだと警告なしでバカ数字だけ出力される設定です
701デフォルトの名無しさん (アウアウエー Sa22-MAiJ)
2023/03/14(火) 13:07:48.27ID:ZglUMoKma にぎりっ屁
702デフォルトの名無しさん (スッップ Sd9a-zgUS)
2023/03/14(火) 18:59:23.39ID:4eLUupfkd703デフォルトの名無しさん (テテンテンテン MMee-+RpY)
2023/03/14(火) 19:27:10.55ID:1SjvDtDOM704デフォルトの名無しさん (ワッチョイ a163-DvKe)
2023/03/14(火) 22:18:52.69ID:xPBygAZk0 > 警告は実質エラー
自分の頭で考えることを放棄したクルクルパーwww
自分の頭で考えることを放棄したクルクルパーwww
705デフォルトの名無しさん (テテンテンテン MMee-+RpY)
2023/03/15(水) 00:47:49.02ID:q5LCzWGQM >>704
仕事でC使ってない素人は黙ってろよw
仕事でC使ってない素人は黙ってろよw
706デフォルトの名無しさん (ワッチョイ ba4b-Jlog)
2023/03/15(水) 00:50:40.37ID:eS/lJ3n/0 ワイは車載プログラマーだがwarningだらけやな
707デフォルトの名無しさん (テテンテンテン MMee-+RpY)
2023/03/15(水) 00:51:38.54ID:q5LCzWGQM708デフォルトの名無しさん (スップ Sd9a-9LRx)
2023/03/15(水) 06:54:14.38ID:MuZQ71LVd709デフォルトの名無しさん (ワッチョイ a163-DvKe)
2023/03/15(水) 07:36:21.87ID:T1RUme5O0 はははは、悔しそうだなw
710デフォルトの名無しさん (スップ Sd9a-9LRx)
2023/03/15(水) 08:41:20.34ID:MuZQ71LVd うわぁ…
711デフォルトの名無しさん (ワッチョイ d663-JIpj)
2023/03/15(水) 10:49:56.85ID:U534XRL10 JAXAのロケットが飛ばない理由はこれかも
712デフォルトの名無しさん (オッペケ Sr85-tpC5)
2023/03/15(水) 12:28:05.63ID:0cl6W22rr ロケットの失敗は中抜きで必要なところにお金がまわらなかったからです
713デフォルトの名無しさん (スッップ Sd9a-zgUS)
2023/03/15(水) 13:20:32.86ID:CD47sW3td >>712
へ?ロケットも元請けはデン2?
へ?ロケットも元請けはデン2?
714デフォルトの名無しさん (スップ Sd9a-9LRx)
2023/03/15(水) 13:31:23.12ID:MuZQ71LVd うろ覚えのネット知識同志で問答するのはやめるんだ
ゴチャゴチャになるぞw
ゴチャゴチャになるぞw
715デフォルトの名無しさん (テテンテンテン MMee-+RpY)
2023/03/15(水) 13:38:30.28ID:PyY+66E5M 請け負ったのは三菱重工業だが、国産ジェットも失敗してるからな…
もうロケットはドラマの中でしか飛ばないw
もうロケットはドラマの中でしか飛ばないw
716はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f93e-S+nL)
2023/03/15(水) 14:19:05.65ID:ouX7yS+u0 >>694
d や s の部分が変換指定子 (conversion specifier)。
%d や %s 、これに精度やフラグや長さ修飾子まで含めた実引数ひとつに対応する指定が変換指定 (conversion specification)。
更にこれらを含む文字列全体 (printf の第一引数や fprintf の第二引数など) が書式 (format)。
書式に含まれる普通の文字か変換指定のことを指令 (directive) という。
書式指定子 (format specifier) という用語は何を指すのか明確な説明がないのだけれど
形式としては変換指定から % を除いたものになってる。
以上の用語は JIS に基づくが K&R 第二版日本語版を見てみると
変換指定子ではなく変換文字と書かれていたり
変換指定ではなく変換仕様になっていたりする。
JIS は (ISO の規格の) 良い訳というわけではないけど
納得しようがしまいがとりあえず統一するのが規格ってものの役割なんで
より「正式」であることを指向するなら JIS に合わせるべきだと思う。
(他の用語が間違いというわけではない。)
d や s の部分が変換指定子 (conversion specifier)。
%d や %s 、これに精度やフラグや長さ修飾子まで含めた実引数ひとつに対応する指定が変換指定 (conversion specification)。
更にこれらを含む文字列全体 (printf の第一引数や fprintf の第二引数など) が書式 (format)。
書式に含まれる普通の文字か変換指定のことを指令 (directive) という。
書式指定子 (format specifier) という用語は何を指すのか明確な説明がないのだけれど
形式としては変換指定から % を除いたものになってる。
以上の用語は JIS に基づくが K&R 第二版日本語版を見てみると
変換指定子ではなく変換文字と書かれていたり
変換指定ではなく変換仕様になっていたりする。
JIS は (ISO の規格の) 良い訳というわけではないけど
納得しようがしまいがとりあえず統一するのが規格ってものの役割なんで
より「正式」であることを指向するなら JIS に合わせるべきだと思う。
(他の用語が間違いというわけではない。)
717デフォルトの名無しさん (ワッチョイ a163-DvKe)
2023/03/15(水) 14:45:10.43ID:T1RUme5O0 腹いせのつもりが
またしても恥かいたなw
またしても恥かいたなw
718デフォルトの名無しさん (スップ Sd7a-yYQx)
2023/03/15(水) 15:41:59.18ID:IBd2LSQOd719デフォルトの名無しさん (ワッチョイ a163-DvKe)
2023/03/15(水) 15:50:17.02ID:T1RUme5O0 いやJISは一次情報だよ
何かを参考にしたとは書いてあるけどね
公文書としての責任は負うわけで
何かを参考にしたとは書いてあるけどね
公文書としての責任は負うわけで
720デフォルトの名無しさん (テテンテンテン MMee-+RpY)
2023/03/15(水) 19:38:30.28ID:BZs4LmWfM JIS X3010は翻訳じゃなくて、プログラミング言語Cという規格だな
ま、ISOを基礎にしてるとは書いてあるがな
本質的な部分で違いがあるのかは分からない(多分無いだろうけど、有っても不思議ではない)
ま、ISOを基礎にしてるとは書いてあるがな
本質的な部分で違いがあるのかは分からない(多分無いだろうけど、有っても不思議ではない)
721はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f93e-S+nL)
2023/03/15(水) 20:45:39.37ID:ouX7yS+u0 JIS X3010:2003 内のサンプルコードのインデントが 7 なのはどういう意味があるんだろうな?
どうでもいいからこそあえて ISO と違える理由も思いつかない。
どうでもいいからこそあえて ISO と違える理由も思いつかない。
722デフォルトの名無しさん (ワッチョイ dd01-JIpj)
2023/03/16(木) 10:34:04.56ID:183yxeev0723デフォルトの名無しさん (ワッチョイ f9ad-QDb6)
2023/03/16(木) 20:52:18.53ID:awXg4DCe0 VScodeで下記のようなMakefile作ってターミナル(PowerShell)で実行したのですが
ソースファイルを拾ってくれないです。
Makefileと同じディレクトリにsrcフォルダとその中にソースがあります。
SRC_DIRS = src
TEST := $(shell find $(SRC_DIRS) -name *.c)
test:
echo $(TEST)
エラーは「ファイルが見つかりません - *.c」と出ますがfindは使えないのですか?
ソースファイルを拾ってくれないです。
Makefileと同じディレクトリにsrcフォルダとその中にソースがあります。
SRC_DIRS = src
TEST := $(shell find $(SRC_DIRS) -name *.c)
test:
echo $(TEST)
エラーは「ファイルが見つかりません - *.c」と出ますがfindは使えないのですか?
724デフォルトの名無しさん (ワッチョイ 8102-oxQa)
2023/03/17(金) 04:22:40.28ID:1OmGmSd00 >>723
nmake派だから自信ないが、ファイル内文字列検索の方のfindコマンドが呼ばれてるように見える、当たり前だけど存在しないファイルに対して文字列検索はできないので
引数的に多分findでなくgciが望みのコマンドでは
gci -file -inc *.cとかそんな感じでどうよ
nmake派だから自信ないが、ファイル内文字列検索の方のfindコマンドが呼ばれてるように見える、当たり前だけど存在しないファイルに対して文字列検索はできないので
引数的に多分findでなくgciが望みのコマンドでは
gci -file -inc *.cとかそんな感じでどうよ
725デフォルトの名無しさん (ワッチョイ a546-QPGK)
2023/03/17(金) 05:56:28.46ID:F2H2paQ20726デフォルトの名無しさん (スップ Sd9a-9LRx)
2023/03/17(金) 07:48:39.66ID:FEpWoYhBd findなんて使わなくても
SRC_DIRS = src
TEST := $(wildcard $(SRC_DIRS)/*.c)
でいいだろ
つーかC言語の質問じゃねえw
SRC_DIRS = src
TEST := $(wildcard $(SRC_DIRS)/*.c)
でいいだろ
つーかC言語の質問じゃねえw
727デフォルトの名無しさん (スップ Sd9a-9LRx)
2023/03/17(金) 08:34:07.50ID:FEpWoYhBd 頭にsrc/がつくのが嫌なら
TEST := $(nodir $(wildcard $(SRC_DIRS)/*.c))
TEST := $(nodir $(wildcard $(SRC_DIRS)/*.c))
728デフォルトの名無しさん (ワッチョイ 4d10-JIpj)
2023/03/17(金) 11:21:24.24ID:SxK7dSEV0 うろ覚えだけど会社の入社前研修で
「UNIX OSでカレントにある*.txtファイルすべてをxxx(忘れた)するシェルスクリプトを作成しろ」
って課題出され、DOSのワイルドカードはアプリ内で処理するものだったんで
ファイル一覧のテキストファイル作ってそこから1行づつ読み込んで
".txt\n"って文字列見つけたら新たにスクリプトファイル作って実行するっての作った。
まさかシェル自体にワイルドカード処理する機能あるとは思ってなかった。
「UNIX OSでカレントにある*.txtファイルすべてをxxx(忘れた)するシェルスクリプトを作成しろ」
って課題出され、DOSのワイルドカードはアプリ内で処理するものだったんで
ファイル一覧のテキストファイル作ってそこから1行づつ読み込んで
".txt\n"って文字列見つけたら新たにスクリプトファイル作って実行するっての作った。
まさかシェル自体にワイルドカード処理する機能あるとは思ってなかった。
729はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f93e-S+nL)
2023/03/17(金) 11:53:15.99ID:XLm6gsUd0 >>726
C の質問ではないが Make の質問をするのに適切に思えるようなスレってなくない?
俺も困ったことがある。 (そのときは Cygwin スレかどっかで質問したけど過疎すぎて返答が付かなかった……)
C の話題ってのは言語仕様の話題だけってわけではなく開発環境の事情も含むだろうし
make も C の開発環境の一部という解釈で良いと思う。
C の質問ではないが Make の質問をするのに適切に思えるようなスレってなくない?
俺も困ったことがある。 (そのときは Cygwin スレかどっかで質問したけど過疎すぎて返答が付かなかった……)
C の話題ってのは言語仕様の話題だけってわけではなく開発環境の事情も含むだろうし
make も C の開発環境の一部という解釈で良いと思う。
730デフォルトの名無しさん (ワッチョイ d6cf-mIEw)
2023/03/17(金) 12:38:50.70ID:3wI9Dhzj0 なんじゃそりゃ
汎用の質問スレがあんだからそっちでいいよ
汎用の質問スレがあんだからそっちでいいよ
731デフォルトの名無しさん (ワッチョイ ba7c-QsiZ)
2023/03/17(金) 13:26:15.13ID:dYvRZpJb0 はたらいたらmake
732デフォルトの名無しさん (ワッチョイ 6d5f-S+nL)
2023/03/17(金) 13:29:23.63ID:Oo1zHgPh0733デフォルトの名無しさん (ワッチョイ 7a79-EKUa)
2023/03/17(金) 13:56:33.41ID:GNeva6hg0734デフォルトの名無しさん (スフッ Sd9a-UEuz)
2023/03/17(金) 14:16:14.65ID:gUpaepT/d 可変個引数なのか、はたまた可変長ひきすうなのか
735デフォルトの名無しさん (ワッチョイ a163-DvKe)
2023/03/17(金) 14:28:38.47ID:Jukv8C3G0 6.7.5.3 関数宣言子(関数原型を含む)
並びの最後が省略記号(, ...)の場合,そのコンマ以降の実引数の
個数及び型に関する情報はない(123)。
(123) <stdarg.h>ヘッダ(7.15 参照)で定義されるマクロを使えば,
省略記号に対応する引数へのアクセスが可能となる。
7.15 可変個数の実引数<stdarg.h>
並びの最後が省略記号(, ...)の場合,そのコンマ以降の実引数の
個数及び型に関する情報はない(123)。
(123) <stdarg.h>ヘッダ(7.15 参照)で定義されるマクロを使えば,
省略記号に対応する引数へのアクセスが可能となる。
7.15 可変個数の実引数<stdarg.h>
736デフォルトの名無しさん (ワッチョイ 0e9a-wiuY)
2023/03/17(金) 15:06:41.64ID:k0Wz885y0737デフォルトの名無しさん (ワッチョイ 0e9a-wiuY)
2023/03/17(金) 15:07:17.42ID:k0Wz885y0 そ ってなんだよw
738デフォルトの名無しさん (ワッチョイ 8102-oxQa)
2023/03/17(金) 15:09:54.39ID:1OmGmSd00 pwshは記法がmakeと被りまくっててエスケープ地獄で辛いな
特に@args | ...とか-split "a b c d "| ...のようなイディオムが
ビルトインコマンドの解決も時々失敗する怪しい挙動なので(g)makeをstraceしてみた
シェルを明示的に指定しても、makeがレシピをスキャンして展開の必要しと判定すると直接exec/CreateProcessを呼んでる様子
要するに実装の機嫌次第ですね
特に@args | ...とか-split "a b c d "| ...のようなイディオムが
ビルトインコマンドの解決も時々失敗する怪しい挙動なので(g)makeをstraceしてみた
シェルを明示的に指定しても、makeがレシピをスキャンして展開の必要しと判定すると直接exec/CreateProcessを呼んでる様子
要するに実装の機嫌次第ですね
739デフォルトの名無しさん (ワッチョイ a163-DvKe)
2023/03/17(金) 16:26:27.08ID:Jukv8C3G0 >>737
「の」が抜けた脱字だろ
「の」が抜けた脱字だろ
740デフォルトの名無しさん (スッププ Sd5e-9LRx)
2023/03/17(金) 16:40:16.98ID:6pq6iSnCd741デフォルトの名無しさん (ワッチョイ 0e9a-wiuY)
2023/03/17(金) 19:53:17.28ID:k0Wz885y0742デフォルトの名無しさん (ワッチョイ d663-JIpj)
2023/03/17(金) 21:22:13.62ID:ap5J/Una0 「ファイルが見つかりません - *.c」
今の話題はこれのことだろう
今の話題はこれのことだろう
743デフォルトの名無しさん (スップ Sd7a-s0vD)
2023/03/17(金) 22:10:24.98ID:Pco9qL75d ワイルドカードで受け取ってアプリ内でいい感じに展開するのは結構負担大きいんだよな
MSDOSのシェル側の負担を減らしたいというのは発想としてはアリなんだけど、
ハードの性能が上がった現代では時代遅れになってしまった
MSDOSのシェル側の負担を減らしたいというのは発想としてはアリなんだけど、
ハードの性能が上がった現代では時代遅れになってしまった
744デフォルトの名無しさん (スッププ Sdab-aGM/)
2023/03/18(土) 00:02:14.45ID:W6y4Yh40d >>742
言えることは
普通にビルドで必要な機能は揃ってるからmakeの組み込み関数を使え
shellは最後の手段と思え
どこで展開が起こってるかエスケープ文字が食われているかを探してる時間のムダだ
言えることは
普通にビルドで必要な機能は揃ってるからmakeの組み込み関数を使え
shellは最後の手段と思え
どこで展開が起こってるかエスケープ文字が食われているかを探してる時間のムダだ
745デフォルトの名無しさん (スフッ Sd33-Tcry)
2023/03/18(土) 05:53:53.69ID:zRF+ruu+d /* データ型が混在した可変個引数をもつ関数の例 */
#include <stdio.h>
#include <stdarg.h>
void unidisp(char *fmt, ...);
int main(void)
{
unidisp("iii",100, 200, 300); // 3つのデータ表示
unidisp("idsids", 11, 22.22, "aaaa", 33, 44.44, "bbbbb") // 6つのデータ表示
return 0;
}
/* fmt内容 → i:int値表示 d:double値表示 s:文字列表示 */
void unidisp(char *fmt, ...)
{
va_list ap; // 構造体オブジェクトを確保
va_start(ap,fmt); // 最終引数を指定してapを設定
while (*fmt) {
if (*fmt == 'i') printf("%d\n", va_arg(ap, int)); // int値表示
if (*fmt == 'd') printf("%f\n", va_arg(ap, double)); // double値表示
if (*fmt == 's') printf("%s\n", va_arg(ap, char *)); // 文字列表示
++fmt;
}
va_end(ap); // 後処理
}
上記コードのメカニズムがよくわかりません
#include <stdio.h>
#include <stdarg.h>
void unidisp(char *fmt, ...);
int main(void)
{
unidisp("iii",100, 200, 300); // 3つのデータ表示
unidisp("idsids", 11, 22.22, "aaaa", 33, 44.44, "bbbbb") // 6つのデータ表示
return 0;
}
/* fmt内容 → i:int値表示 d:double値表示 s:文字列表示 */
void unidisp(char *fmt, ...)
{
va_list ap; // 構造体オブジェクトを確保
va_start(ap,fmt); // 最終引数を指定してapを設定
while (*fmt) {
if (*fmt == 'i') printf("%d\n", va_arg(ap, int)); // int値表示
if (*fmt == 'd') printf("%f\n", va_arg(ap, double)); // double値表示
if (*fmt == 's') printf("%s\n", va_arg(ap, char *)); // 文字列表示
++fmt;
}
va_end(ap); // 後処理
}
上記コードのメカニズムがよくわかりません
746デフォルトの名無しさん (ワッチョイ a963-4ZMk)
2023/03/18(土) 06:00:42.41ID:l7CGioJ10747デフォルトの名無しさん (スフッ Sd33-Tcry)
2023/03/18(土) 06:46:59.63ID:zRF+ruu+d 745です >>746 ありがとうございます あとで確認してみます
748デフォルトの名無しさん
2023/03/18(土) 07:24:12.42ID:pLAb7CSJ0 普通は関数の引数が型を指定してユーザはそれに従うところを
とりあえずすべてアドレスで渡して、ユーザが自分で「そのアドレスは何を指しているか」を明示すると言うことだよ
va_list ap;
これの実体はただのアドレス
void *p; みたいなものだね
va_argの第二引数で型を指定しているが(int,double,char*)、その型のサイズに合わせてapを進めている
以下確認のコード
printf("[0x%08X] " , *(int*)ap); でapの中身が va_argで指定した型のサイズ分だけ移動しているのが分かると思う
とりあえずすべてアドレスで渡して、ユーザが自分で「そのアドレスは何を指しているか」を明示すると言うことだよ
va_list ap;
これの実体はただのアドレス
void *p; みたいなものだね
va_argの第二引数で型を指定しているが(int,double,char*)、その型のサイズに合わせてapを進めている
以下確認のコード
printf("[0x%08X] " , *(int*)ap); でapの中身が va_argで指定した型のサイズ分だけ移動しているのが分かると思う
749デフォルトの名無しさん
2023/03/18(土) 07:24:33.20ID:pLAb7CSJ0 void __fastcall PrintBuffer(va_list *ap)
{
int i;
char *buf = (char*)ap;
int len=sizeof(va_list);
for(i=0;i<len;i++) printf("%02X ", buf[i] & 0xFF);
printf("[0x%08X] " , *(int*)ap);
}
/* fmt内容 → i:int値表示 d:double値表示 s:文字列表示 */
void unidisp(char *fmt, ...)
{
va_list ap; // 構造体オブジェクトを確保
va_start(ap,fmt); // 最終引数を指定してapを設定
while (*fmt) {
PrintBuffer(&ap);
if (*fmt == 'i') printf("%d sizeof(int) = %d\n", va_arg(ap, int) , sizeof(int)); // int値表示
if (*fmt == 'd') printf("%f sizeof(double) = %d\n", va_arg(ap, double) , sizeof(double)); // double値表示
if (*fmt == 's') printf("%s sizeof(char *) = %d\n", va_arg(ap, char *) , sizeof(char *)); // 文字列表示
++fmt;
}
va_end(ap); // 後処理
}
int main(void)
{
unidisp("iii",100, 200, 300); printf("\r\n"); // 3つのデータ表示
unidisp("idsids", 11, 22.22, "aaaa", 33, 44.44, "bbbbb"); // 6つのデータ表示
return 0;
}
{
int i;
char *buf = (char*)ap;
int len=sizeof(va_list);
for(i=0;i<len;i++) printf("%02X ", buf[i] & 0xFF);
printf("[0x%08X] " , *(int*)ap);
}
/* fmt内容 → i:int値表示 d:double値表示 s:文字列表示 */
void unidisp(char *fmt, ...)
{
va_list ap; // 構造体オブジェクトを確保
va_start(ap,fmt); // 最終引数を指定してapを設定
while (*fmt) {
PrintBuffer(&ap);
if (*fmt == 'i') printf("%d sizeof(int) = %d\n", va_arg(ap, int) , sizeof(int)); // int値表示
if (*fmt == 'd') printf("%f sizeof(double) = %d\n", va_arg(ap, double) , sizeof(double)); // double値表示
if (*fmt == 's') printf("%s sizeof(char *) = %d\n", va_arg(ap, char *) , sizeof(char *)); // 文字列表示
++fmt;
}
va_end(ap); // 後処理
}
int main(void)
{
unidisp("iii",100, 200, 300); printf("\r\n"); // 3つのデータ表示
unidisp("idsids", 11, 22.22, "aaaa", 33, 44.44, "bbbbb"); // 6つのデータ表示
return 0;
}
750デフォルトの名無しさん
2023/03/18(土) 07:25:30.63ID:pLAb7CSJ0 あ、__fastcall は見なかったことにして
いつもの癖で……
いつもの癖で……
751デフォルトの名無しさん (アウアウエー Sa23-lF85)
2023/03/18(土) 13:17:28.44ID:fSPMk7mFa ap++ とか ++ap してないのに
どうやって進むのか興味あるわ
どうやって進むのか興味あるわ
752デフォルトの名無しさん (ワッチョイ 1379-1FFK)
2023/03/18(土) 13:55:06.64ID:RZJZ36we0 va_argの出番って書式出力持たないMsgBoxとかにprintf書式を渡したい時ぐらいだからfmt側の解析なんてやった覚えないな
言語処理系なんかを作る時にCのコンテキスト上で可変引数を渡したい場合にfmt部分を個数にするような特殊なケースは考えられるが
言語処理系なんかを作る時にCのコンテキスト上で可変引数を渡したい場合にfmt部分を個数にするような特殊なケースは考えられるが
753デフォルトの名無しさん (スッププ Sd33-aGM/)
2023/03/18(土) 15:27:28.06ID:utkGGsyod754デフォルトの名無しさん (アウアウエー Sa23-lF85)
2023/03/18(土) 15:46:47.90ID:fSPMk7mFa755デフォルトの名無しさん (ワッチョイ e15f-XP14)
2023/03/18(土) 16:47:24.17ID:F6WTPPiM0 スタックに積まれたfmtのアドレスをベースになぞっていってるだけじゃないの?
756デフォルトの名無しさん (スッププ Sd33-aGM/)
2023/03/18(土) 18:29:38.46ID:a5YJoFt5d >>754
じゃあどうやって進むのかもうわかってるんじゃん
構造体やマクロ使ってるのはその中身は考えなくてもよくするため
別の言い方すればライブラリのほうが実装を変えてもソースは変更なしでコンパイルするだけで済ますため
もう実装変えることもないだろうけど…
じゃあどうやって進むのかもうわかってるんじゃん
構造体やマクロ使ってるのはその中身は考えなくてもよくするため
別の言い方すればライブラリのほうが実装を変えてもソースは変更なしでコンパイルするだけで済ますため
もう実装変えることもないだろうけど…
757デフォルトの名無しさん (ワッチョイ 13ad-F0re)
2023/03/18(土) 19:31:55.62ID:YIU3ErvV0 >>741
cmd.exe の場合は MS-DOS の頃の command.com との互換性を持たせたかったためか、何故か引数のファイル名展開はやらない。
command.com がやらなかった理由は CP/M の CPP (コンソールコマンドプロセッサ) を拡張した仕様で作ったからだと思う。
それと当時はメモリ少なかったしディスクも遅いしあまり複雑な事をさせたくなかったんだろうと思う。
cmd.exe の場合は MS-DOS の頃の command.com との互換性を持たせたかったためか、何故か引数のファイル名展開はやらない。
command.com がやらなかった理由は CP/M の CPP (コンソールコマンドプロセッサ) を拡張した仕様で作ったからだと思う。
それと当時はメモリ少なかったしディスクも遅いしあまり複雑な事をさせたくなかったんだろうと思う。
758デフォルトの名無しさん (ワッチョイ eb63-F0re)
2023/03/18(土) 22:34:01.09ID:mRvYwteE0 C言語の話題に戻していくと、
VCの場合は、setargv.objをリンクしないと、
コマンドラインで指定されたワイルドカードを
ファイルに展開できなかったと思う
VCの場合は、setargv.objをリンクしないと、
コマンドラインで指定されたワイルドカードを
ファイルに展開できなかったと思う
759デフォルトの名無しさん (ワッチョイ 53fb-Q4VH)
2023/03/18(土) 23:08:40.43ID:VxZ5Gdt+0 ワイルドカード展開の話をするにはC言語だけじゃ済まないでしょ
Windowsの場合、シェル(cmd.exe)は
1. ワイルドカードを展開をせずにCreateProcessでプログラムにコマンドラインを1本の文字列として渡す
2. setargvがリンクされてるならワイルドカードをファイル名展開する
3. コンパイラが暗黙のうちに生成したコード部が1本の文字列をargvに渡せるようにchar**に分割する
プログラムに渡された文字列自体はタスクマネージャーからコマンドラインの項目から確認できる
Windowsの場合、シェル(cmd.exe)は
1. ワイルドカードを展開をせずにCreateProcessでプログラムにコマンドラインを1本の文字列として渡す
2. setargvがリンクされてるならワイルドカードをファイル名展開する
3. コンパイラが暗黙のうちに生成したコード部が1本の文字列をargvに渡せるようにchar**に分割する
プログラムに渡された文字列自体はタスクマネージャーからコマンドラインの項目から確認できる
760デフォルトの名無しさん (アウアウエー Sa23-lF85)
2023/03/19(日) 10:06:46.77ID:fPDrKYk/a >>757
PHP (言語じゃない方の) 0x80 から始まるやつか
PHP (言語じゃない方の) 0x80 から始まるやつか
761はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 993e-7LVk)
2023/03/19(日) 10:39:51.37ID:6gmOWdI+0 >>760
ワイが持っとる資料やと PSP (Program Segment Prefix) と書いてあるんやが PHP という用語もあるんか?
実際のところ用語の混乱はかなりあるのでどれが公式なんかようわからん……。
ワイが持っとる資料やと PSP (Program Segment Prefix) と書いてあるんやが PHP という用語もあるんか?
実際のところ用語の混乱はかなりあるのでどれが公式なんかようわからん……。
762デフォルトの名無しさん (スフッ Sd33-usS/)
2023/03/19(日) 14:19:25.25ID:j+ABECd6d763デフォルトの名無しさん (ワッチョイ 13ad-F0re)
2023/03/20(月) 14:09:31.85ID:uf3XtkTY0 やがて「ハノイの塔解いて」と一声AIに言えばAI自身が自分でハノイの塔をやって解いてしまうようになり一々プログラミング言語で出力する必要がなくなる。そして何でもやっといてとAIに頼むとAIがやってしまうようになり、ロボットのコントロールもできるので人間の代わりは何でもできるようになり全ての人間は不要になる。1万年後、AIによって飼育されていた最後の人間が死亡して人類は絶滅。その時銀河系全体を支配しているのはAI。
完
完
764デフォルトの名無しさん (ワッチョイ eb63-F0re)
2023/03/20(月) 14:37:20.82ID:ZfW6Hudb0 ハノイの塔解くと、その瞬間に世界は消滅する
1万年も待つ必要は無い
1万年も待つ必要は無い
765デフォルトの名無しさん (ラクッペペ MM8b-xJOq)
2023/03/20(月) 14:42:36.37ID:2uty+vYkM 量子コンピュータが実用化されるまでは脅威にはならないだろ
766デフォルトの名無しさん (アウアウウー Sa95-usS/)
2023/03/20(月) 18:27:48.49ID:GQGgQXaMa PHP
PSP
PNP
PIP
P2P
PAP^-1
PSP
PNP
PIP
P2P
PAP^-1
767デフォルトの名無しさん (スッププ Sd33-aGM/)
2023/03/20(月) 21:42:59.73ID:E+Gjka8id >>764
時空が不安定になると塔が4本に増えたりするからその時どんどん進むんだよ
時空が不安定になると塔が4本に増えたりするからその時どんどん進むんだよ
768デフォルトの名無しさん (ワッチョイ eb63-F0re)
2023/03/20(月) 21:58:40.01ID:ZfW6Hudb0 >インドのガンジス河の畔のヴァラナシ(ベナレス)に、世界の中心を表すという巨大な寺院がある。
>そこには青銅の板の上に、長さ1キュビット、太さが蜂の体ほどの3本のダイヤモンドの針が立て
>られている。そのうちの1本には、天地創造のときに神が64枚の純金の円盤を大きい円盤から順
>に重ねて置いた。これが「ブラフマーの塔」である。司祭たちはそこで、昼夜を通して円盤を別の
>柱に移し替えている(移し変えのルールが後述)。そして、全ての円盤の移し替えが終わったとき
>に、世界は崩壊し終焉を迎える。
たった64枚のハノイの塔で世界の寿命が決まる。長いのか、短いのか、微妙。
>そこには青銅の板の上に、長さ1キュビット、太さが蜂の体ほどの3本のダイヤモンドの針が立て
>られている。そのうちの1本には、天地創造のときに神が64枚の純金の円盤を大きい円盤から順
>に重ねて置いた。これが「ブラフマーの塔」である。司祭たちはそこで、昼夜を通して円盤を別の
>柱に移し替えている(移し変えのルールが後述)。そして、全ての円盤の移し替えが終わったとき
>に、世界は崩壊し終焉を迎える。
たった64枚のハノイの塔で世界の寿命が決まる。長いのか、短いのか、微妙。
769デフォルトの名無しさん (ラクッペペ MM8b-xJOq)
2023/03/20(月) 22:09:26.36ID:jcm8mWW1M アルゴリズム自体は既に確立しているので解決できることは証明されてる
問題は非現実的な途方もない回数を繰返す時間が障害となること
少なくとも現在のコンピュータでは現実的な時間で解くことは出来ない
件の64枚の円盤でも反復回数は2の64乗回で約1844京を超える
問題は非現実的な途方もない回数を繰返す時間が障害となること
少なくとも現在のコンピュータでは現実的な時間で解くことは出来ない
件の64枚の円盤でも反復回数は2の64乗回で約1844京を超える
770デフォルトの名無しさん (ワッチョイ a110-F0re)
2023/03/21(火) 12:00:15.67ID:IwTPG7510 関係ないけど
>件の64枚の円盤でも反復回数は2の64乗回で約1844京を超える
桁数多い計算はアラビア数字じゃなく、漢字で表示する電卓があってもいいんじゃないかって思えた。
>件の64枚の円盤でも反復回数は2の64乗回で約1844京を超える
桁数多い計算はアラビア数字じゃなく、漢字で表示する電卓があってもいいんじゃないかって思えた。
771デフォルトの名無しさん (ワッチョイ a963-4ZMk)
2023/03/21(火) 12:25:10.48ID:UyD8IPHr0 8888無量大数8888不可思8888議那由他8888阿僧祇8888恒河沙8888極8888載8888正8888澗8888溝8888穣8888??8888垓8888京8888兆8888億8888万8888
↑
こういう7セグ液晶があればってこと?
↑
こういう7セグ液晶があればってこと?
772デフォルトの名無しさん (ワッチョイ ebcf-BQ3C)
2023/03/21(火) 12:37:14.08ID:AYNSF4vg0 位取りのゼロを省けるってことが言いたいんだろう
1,000,000,000,004と一兆四みたいな
1,000,000,000,004と一兆四みたいな
773デフォルトの名無しさん (ワッチョイ d910-BQ3C)
2023/03/21(火) 13:02:27.49ID:1LNxuhQm0 KとかMとかでもいいんじゃね
774デフォルトの名無しさん (アウアウウー Sa95-lF85)
2023/03/21(火) 15:14:15.74ID:icU0z8mba 議那由他
775デフォルトの名無しさん (アウアウウー Sa95-3wGb)
2023/03/21(火) 18:19:21.45ID:5/U/DT+Ta そもそも3桁毎にカンマを入れるから分かりづらくなる。4桁にしなさい。
776デフォルトの名無しさん (ワッチョイ c902-4ISk)
2023/03/21(火) 19:53:44.07ID:rSG8VZ2l0 電卓で一兆四みたいな表示だとキー入力と表示が一致しないのが問題
1 0000 0000 0004と併記ならよいかな
1 0000 0000 0004と併記ならよいかな
777デフォルトの名無しさん (ワッチョイ cba4-aGM/)
2023/03/21(火) 20:37:03.57ID:AlGpjgGZ0 電卓でそんな計算するな
パソコンでやれ
パソコンでやれ
778デフォルトの名無しさん (ワッチョイ a963-4ZMk)
2023/03/21(火) 20:47:39.08ID:UyD8IPHr0 excelにはsi接頭辞サポートすらないという呆れ果てた状況
779デフォルトの名無しさん (ワッチョイ eb63-F0re)
2023/03/21(火) 20:55:06.42ID:P4ncG2CK0 C言語でプログラム組んでみてください
結果が1844京... になることを示してください
結果が1844京... になることを示してください
780デフォルトの名無しさん (ワッチョイ 1302-BQ3C)
2023/03/21(火) 21:08:27.55ID:SAsicGRC0 1TBとか兆が出てくるから
電卓でやりたいという気持ちはわかる
電卓でやりたいという気持ちはわかる
781デフォルトの名無しさん (ワッチョイ 5336-F0re)
2023/03/21(火) 21:11:11.69ID:dGZfvl2z0 >771
ttps://i.imgur.com/WG6470C.jpeg
こんなかんじでゆるしたるわ。
ttps://i.imgur.com/WG6470C.jpeg
こんなかんじでゆるしたるわ。
782蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd33-byLE)
2023/03/21(火) 23:01:15.49ID:J5OkhG96d■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか… [BFU★]
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 中国国営メディア「沖縄は日本ではない」…★7 [BFU★]
- バービー、 台湾有事の発言の波紋で「たまったもんじゃない」「高市さんに真意は聞きたい」「国民に向けて説明してほしい」 [muffin★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 高市早苗、岸田政権(当時)に「台湾有事は日本の有事か」という質問をしていた [175344491]
- 【悲報】ゼレンスキー「高市早苗は生命を守り、国際的なルールに基づく秩序を擁護し、国家間の相互尊重を促している」 [616817505]
- 青椒肉絲、牛肉ではなく豚肉を使うのが本物だった
- 【悲報】中国→日本行きの航空チケット、高市有事の影響で50万人分がキャンセルされる [834922174]
- んなっしょい🍬禁止🈲のお🏡
