🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Q&A

解決済

1回答

25296閲覧

C言語:コンパイルエラー「expected identifier or '('」と出てしまいます。。どうしたら良いでしょうか?

tetsutail_study

総合スコア25

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

0グッド

0クリップ

投稿2021/01/04 08:24

前提・実現したいこと

下のコード(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を使用しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

そのfor文は関数に入ってません
実行する文は、必ず関数に入れましょう

投稿2021/01/04 08:30

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tetsutail_study

2021/01/04 08:33

解決しました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問