前提・実現したいこと
下のコード(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
1#include <stdio.h> 2#include <stdlib.h> 3#include <string.h> 4#include <sys/time.h> 5#include "conio.h" 6 7struct eachkey{ 8 int key_num; //キーの位置番号 9 double keytimes; //各キー入力時間保存用 10 int keyweight; //各キーの重み付け保存用 11}; 12 13struct eachkey keys[30]; 14char 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',',','.','/'}; 15 16for(int i=0;i<30;i++) keys[i].key_num = i; //キーの位置番号設定 17 18double getETime(){ 19 struct timeval tv; 20 gettimeofday(&tv, NULL); 21 return tv.tv_sec + (double)tv.tv_usec*1e-6; 22} 23 24/*指定されたキーが押される時間を計測*/ 25double keytime(char c){ 26 double start, end, time; 27 char getkey; 28 int ec; 29 printf("手をホームポジションにおいて,スペースキーを押してください\n"); 30 while(1){ 31 int space = getch(); 32 if(space == ' ') break; 33 } 34 start = getETime(); 35 printf("「%c」を入力してください>> ", c); 36 while(1){ 37 ec = getch(); 38 if(ec == c) break; 39 } 40 printf("%c\n", ec); 41 end = getETime(); 42 time = end - start; 43 printf("キー入力時間:%lf秒\n", time); 44 return time; 45} 46 47int GetRandom(int min,int max){ 48 return min + (int)(rand()*(max-min+1.0)/(1.0+RAND_MAX)); 49} 50 51/*ランダムにキー入力を受付+時間計測して重み順位付け*/ 52int main(){ 53 int i, n; 54 for(i=0;i<30;i++) keys[i].keytimes = -1; //keytimes初期化 55 for(i=0;i<30;i++){ 56 n = GetRandom(0,29); 57 while(keys[n].keytimes!=-1){ //記録されていないキーを探すs 58 n = GetRandom(0,29); 59 } 60 keys[n].keytimes = keytime(keyplace[n]); 61 } 62 for(i=0;i<30;i++) printf("%d : %lf", i, keys[i].keytimes); 63 64 //for(i=0;i<30;i++) printf("キーの位置=%d : 重み=%d", i, keys[i].keyweight); 65}
補足情報(FW/ツールのバージョンなど)
MacのVScodeを使用しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/04 08:33