ヘディングのテキスト### C言語「じゃんけんをして、勝敗を出力する」
C言語の基本項目「ファイル分割」で、上手くいかない
ファイルの開始を行うと、黒い画面が出るのみで、出力されない。
環境はVisual Studioで、コードにエラーはなく、問題は見つかりませんでした。となっている
ソース、ヘッダーファイルなどは、cドライブにプログラミング→練習というファイルフォルダーを作成して保存している
発生している問題・エラーメッセージ
エラーは発生していないが、実行できない。
該当のソースコード
/*main.c*/ #include<stdio.h> #include"mys.h" #include"comp.h" #include"iff.h" int main(void) { int own(); int random(); int battle(); return 0; }
/*mys.h 自分の手を入力するところ*/ #ifndef MY_H #define MY_H extern int a; int own(); #endif MY_H /*mys.c*/ #include"mys.h" #include<stdio.h> int a=0; int own() { printf("入力してください\nグー:1 チョキ:2 パー:3\n"); scanf("%d\n", &a); return a; }
/*comp.h コンピュータの手*/ #ifndef COMP #define COMP extern int b; int random(); #endif COMP /*comp.c*/ #include"comp.h" #include<time.h> #include<stdlib.h> #include<stdio.h> int b; int random() { srand((unsigned)time(NULL)); b= rand() % 1 + 3; return b; }
/*iff.h勝敗の判定をするところ*/ #ifndef IFF_H #define IFF_H int battle (int, int); #endif IFF_H /*iff.c*/ #include"iff.h" #include<stdio.h> #include"comp.h" #include"mys.h" int battle() { if (a == b) { printf("あいこです"); return 1; } else if ((a == 1 && b == 2) |(a == 2 && b == 3) |(a == 3 && b == 1)) { printf("あなたの勝ちです"); return 0; } else{ printf("あなたの負けです"); return 0; } }
試したこと
エラーはなくなったが、論理式がおかしいのか、ファイル分割の仕方がおかしいのか、関数の使い方がおかしいのか分からなかった。
scanfで、戻り値が無視されている、という警告があったので、
extern やグローバル変数の使い方が違うのかと思ったが、よくわからなかった。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。