
はてなキーワード:printfとは
俺はSEだ。
とある処理がどうしても動かない。
何かがおかしい。
コンソールにログ出してみる。条件をprintfで確認してみる。
どこを見ても間違ってない。
念のためキャッシュもクリア。IDEも再起動。念押しでOSも再起動。
でもやっぱり動かない。
1時間粘った。
ここまでやって動かないなら、自分の盲点じゃなくて別の要因じゃないか?って疑う頃だ。
これ俺だけじゃ無理かもって思って、隣の席の同僚に声をかけた。
「ちょっと見てくれない?」
「OK、どんな感じ?」
「この処理がね、絶対通らないんだよ。条件も間違ってないし、ログ見ると…」
その瞬間だ。
――通った。
あっさり正常動作。
…は?
え?え?
さっきまで1時間ずっと止まってたよな?何度試してもダメだったよな?
同僚も「普通に動いてるけど?」みたいな顔。
もう一回試す。やっぱり問題ナシ。
「へー、でも今は大丈夫そうだね」
取り残された俺。
1時間の粘りはなんだったんだ。
あの粘りに費やした集中力、あの調査ログ、全て無駄だったのか。
……うん、動くんなら問題ナシ!
∞
0b101001 ⇆ 0xDEAD BEEF ⇆ 42 ⇆ Ⅳ²
miaou… ニャー… ꯀꯪꯍꯧ? κουάκ! כוּאַק! куак!
∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑
/* ----- .- -. --. .-.-.- / .- .. / .---- -.-.-- */
(λf.(f f)) (λf.(f f)) // ouroboros in λ-land
ᚠᚢᚦᚨᚱᚲᚷᚹᚺ
ΣΩΨΦ ≡ ∞ ≡ ℵ₀ ≡ 🜂 --???--
beep ⟿ boop ⟿ _̷̳̲̠͎͌̆͐̔͢͠ͅ!͓̟̦͗͆
> INT 10h
> JMP $
π ≠ τ? ※ the proof escapedatdawn
🐸: “ribbit / kvæk /croâ”
🐺: “awoooo0000”
🐝: “bZZZz… ---.. ---..”
01001000 01100101 01101100 01110000 ← haunting inASCII
𝑑𝑥 ⟿ ∮𝑑𝑥 = 0 (closed curve,open verdict)
———— ———— ———— ————
| 空欄 | vacío | леere | ﷽ |
———— ———— ———— ————
0 ! 1 ! 1 ! 2 ! 3 ! 5 ! 8 ! 13 ! 21 ! …
printf("ここで終わらない\n"); // yet terminates
·−·−· … … ·−·−·
「 」←nothing to see
╔═╗╦ ╦╔═╗╔═╗╦═╗ ∴
║ ╦║ ║╚═╗║ ╠╦╝ ∵
╚═╝╚═╝╚═╝╚═╝╩╚═ ∴
end; // or not? …fin.
プログラミングを覚えたってのならたぶんよくわからないまま写経した後にコードの中のこの部分がどう動くのか考える、printf仕込んで流れ見るみたいなフェーズがあったんだと思う
Vibe Coding自体人がコードに触らずに作るやつだしガチャ回して動けば万歳になりやすそうなイメージはあるのは確か
今のLLMって0->1のコード生成はわりとうまくいくけど1->5みたいな細かい追加改修のが迷走しやすいイメージあるし
思いおこしてみれば自分はベーマガのコードをよく分かんないまま写経したところからプログラミング覚えたので、大差ないんではと言う感じはある。https://t.co/NQflEzJP55—Jun Harada (@hrjn)May 7, 2025
main( ){
}
C言語で別のプログラムを作成し、system関数などを使って最初のプログラムを実行し、その出力を読み取って比較する方法です。
intmain() {
char expected_output[] = "hello, world\n";
char actual_output[100]; // 十分なバッファサイズを確保
//helloプログラムを実行し、出力を actual_output にリダイレクト(環境依存)
// これは非常に簡略化された概念であり、実際にはパイプ処理などが必要になります
#ifdef _WIN32
sprintf(command, "hello.exe> temp_output.txt");
#else
sprintf(command, "./hello> temp_output.txt");
#endif
system(command);
FILE *fp = fopen("temp_output.txt", "r");
if (fp != NULL) {
fgets(actual_output, sizeof(actual_output),fp);
fclose(fp);
remove("temp_output.txt"); // 一時ファイルを削除
} else {
printf("エラー:一時ファイルのオープンに失敗しました\n");
return 1;
}
if (strcmp(actual_output, expected_output) == 0) {
return 0;
} else {
printf("テスト失敗: 期待された出力 '%s'、実際の出力 '%s'\n", expected_output, actual_output);
return 1;
}
}
昨晩はprintf() しながらビンゴの玉(?)をスプライトで表示ところを作ったよ。
いわゆる画面演出やね。
オブジェクトが出てくるときは減速 オブジェクトが出ていくときは加速 コレ常識
こういうのは手癖でもう作れるようになってるンゴ!
へたっぴが作ると「パッと出て、パッと消える」みたいな感じになるけど算数ができないとこうなるんだよね。
減速も加速もレトロゲーム()なら整数の計算だけでもできるよん
高校の数学で習ったと思うけどn(n+1)/2 で 1+2+3+4+5+6...+n が求められるから
終着点から nフレームの時の距離とすればいい感じに減速にできる逆算すれば加速になるって寸法よ
これがわからない人は二次曲線とかの少数をつかうから動きがカクカクになって草
止めずに素早く動かすならそれでもいいけどとまるときにカクカクってなるのだけは後味わるいから散々つくらされたのでもう手癖で覚えてるンゴ
C言語の授業だったと思う
その頃のWindows98が一般家庭にはそこそこ普及してて、学校のPCはほとんど95だった
ゲームを作る学科とはいえ、まだ入学したてでプログラムなんてすらすら組める生徒はほとんどいなかった
というか、卒業までにそこそこプログラムを書けるようになる人なんて数人だった
じゃあゲーム作るなんて無理だろうって話なのだが、ここでいうゲームは、
printfとgetc?を駆使して、さらには可能であればrand(rands?)も使用し、
あらゆる演算(四則演算とさらには%)を組み合わせた高度なアルゴリズムが必要な
中には、ゲームブックを具現化したような、分岐数が二桁を超える圧倒的ボリュームのマルチエンディングアドベンチャーを作ったやつも居たし、
タイマーかなんかでゴリゴリ回してだったかターン制だったかの、インベーダーゲームを作ったやつもいた
たしか2コマぶち抜きだったか、日を分けて2~3コマだったか忘れたけど、そこまでやるやつは家では他の事するので
授業内で全部組んでた
「大」が自キャラで、剣を装備したら「犬」になる とかで 王様との挨拶をすっ飛ばして
「山」やら「森」やらある「草」フィールドを歩いてたら敵にエンカウントして、ドラクエ1みたいな戦闘できるやつ
AAで敵のグラフィック作ろうとしてあまりにも時間がかかることでスライムだけ作ったぐらいで終わった
今思えばシレンを作れば良かったと思う
先月ぐらいに、今更そういやローグってどんなゲームだ? って気になって調べたら、AAとか要らんみたいだったから
でも当時は好きなゲームで一番シンプルで作りやすそうなのは、ドラクエだった
というのを他の増田でマリオを作るという記述見て思い出しただけの増田
なんか色々考えさせられることは多いなと思って書き始めたのだけど、前述の圧倒的ボリュームのマルチエンディングアドベンチャーは
だいたい選択肢を間違えたら一歩先で💩まみれになって死ぬだったなあ って記憶がよみがえって来てどうでもよくなってしまった
実際は、穴に落ちたり、犬に嚙まれたり、色んなパターンあったし、エンディングは画面切り替えもあってそれなりに感動する仕上がりになってたから、💩まみれって評価は正しくはない
件のブコメにスターを付けてしまい大変申し訳ございませんでした。
おかげで間違った情報を上位ブコメとして表示させてしまい、多くの方にご迷惑をおかけすることになってしまいました。
あなた様はもとより、件のブコメを読んだすべての人に対して土下座で謝罪させて頂きます。
その方法は、中国より古来から伝わる「三跪九叩頭の礼」をもってして深き謝意を表させて頂きます。
なお、表記を簡潔にするためにC言語で記述させていただきます。
#include <stdio.h>
intmain(){
int i, j;
for(i=1; i<=3; i++){
printf("跪\n");
for(j=1; j<=3; j++){
printf("起\n");
}
printf("起立\n");
}
return 0;
}
御清聴の程有難く存じます。
ワイ:
#include<stdio.h>intmain(){ for(int i = 1;i <= 100;i++){ if(i%15 == 0){printf("FizzBuzz\n"); }else if(i%3 == 0){printf("Fizz\n"); }else if(i%5 == 0){printf("Buzz\n"); }else{printf("%d\n",i); } } return 0;}
ワイ:考えるのが面倒くさいから
Boi:ここまとめられるでしょ
#include<stdio.h>intmain(){ for(int i = 1;i <= 100;i++){ if(i%3 == 0)printf("Fizz"); if(i%5 == 0)printf("Buzz"); if(i%3 != 0 || i%5 != 0)printf("%d",i);printf("\n"); } return 0;}
Boi:ああっ
ワイ:ww
https://github.com/kokorohamoe/OpenProfile/blob/master/700_sample/Java/Jurina/reader.cpp
intmain(int argc,constchar*argv[]){
int v;
char buffer[1024];
while(1){
printf("input\n");
scanf("%s%d",buffer,&v);
if(strcmp(buffer,"print")==0)
fprintf(stderr, "public classbase{\n"
"public staticvoidmain(String[] args){\n"
"int i = %d;\n"
"System.out.println(i);}}\n",v);
}
return 0;
}