前提・実現したいこと
下のコード(C言語)の16行目のfor文でエラーが出ています。このfor文を消すとコンパイルが通るので、ここがエラーの原因だと思うのですが、理由がわかりません。。原因を教えてください!
発生している問題・エラーメッセージ
keytime.c:16:1: error: expected identifier or '(' for(int i=0;i<30;i++) keys[i].key_num = i; //キーの位置番号設定 ^ 1 error generated.
該当のソースコード
C
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/time.h> #include "conio.h" struct eachkey{ int key_num; //キーの位置番号 double keytimes; //各キー入力時間保存用 int keyweight; //各キーの重み付け保存用 }; struct eachkey keys[30]; char keyplace[30] = {'q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l',';','z','x','c','v','b','n','m',',','.','/'}; for(int i=0;i<30;i++) keys[i].key_num = i; //キーの位置番号設定 double getETime(){ struct timeval tv; gettimeofday(&tv, NULL); return tv.tv_sec + (double)tv.tv_usec*1e-6; } /*指定されたキーが押される時間を計測*/ double keytime(char c){ double start, end, time; char getkey; int ec; printf("手をホームポジションにおいて,スペースキーを押してください\n"); while(1){ int space = getch(); if(space == ' ') break; } start = getETime(); printf("「%c」を入力してください>> ", c); while(1){ ec = getch(); if(ec == c) break; } printf("%c\n", ec); end = getETime(); time = end - start; printf("キー入力時間:%lf秒\n", time); return time; } int GetRandom(int min,int max){ return min + (int)(rand()*(max-min+1.0)/(1.0+RAND_MAX)); } /*ランダムにキー入力を受付+時間計測して重み順位付け*/ int main(){ int i, n; for(i=0;i<30;i++) keys[i].keytimes = -1; //keytimes初期化 for(i=0;i<30;i++){ n = GetRandom(0,29); while(keys[n].keytimes!=-1){ //記録されていないキーを探すs n = GetRandom(0,29); } keys[n].keytimes = keytime(keyplace[n]); } for(i=0;i<30;i++) printf("%d : %lf", i, keys[i].keytimes); //for(i=0;i<30;i++) printf("キーの位置=%d : 重み=%d", i, keys[i].keyweight); }
補足情報(FW/ツールのバージョンなど)
MacのVScodeを使用しています。
まだ回答がついていません
会員登録して回答してみよう