入力間違えでした。すみません。
pointer-to-object型にする
C言語でタイピング練習プログラムを作っています。
以前はvisual studio c++ 2008を使っていた時には問題く動いたのに、visual studio 2017 c++では、「式には pointer-to-object型が必要です。」「 error C2109: 配列または、ポインターでない変数に添字が使われました。」が出てきて動かなくなりました。
どうしたらよいでしょうか?
発生している問題・エラーメッセージ
「式には pointer-to-object型が必要です。」 「 error C2109: 配列または、ポインターでない変数に添字が使われました。」
該当のソースコード
C言語
1#include<stdio.h> 2#include<stdlib.h> 3#include<time.h> 4#include<conio.h> 5 6void shuffle(int data[], int size) 7{ 8 int x = 0; 9 int pos = 0; 10 int tmp = 0; 11 12 for (x = 0; x < size; x++) 13 { 14 pos = rand() % (size - x); 15 tmp = data[size - x - 1]; 16 data[size - x - 1] = data[pos]; 17 data[pos] = tmp; 18 } 19} 20 21int main(void) 22{ 23 char moji4[23][5] = { "getc","putc","feof","gets","puts","free","labs","atof","atoi","atol","ldiv", 24 "rand","exit","time","case","else","char","long","main","null","void","math","enum" }; 25 26 int rns4[23]; 27 28 int j, i, r, miss; 29 char input, sen, retry; 30 double req_time; 31 clock_t start, end; 32 33 do { 34 printf("【タイピング練習プログラム】4~7文字のタイピングができます。文字数を入力:"); 35 while (1) 36 { 37 sen = _getch(); 38 if ((sen == 0x34) && (sen == 0x35) && (sen == 0x36) && (sen == 0x37)) 39 { 40 printf("%c\n\n", sen); 41 break; 42 } 43 } 44 switch (sen) 45 { 46 case 0x34: 47 printf("【タイピング練習プログラム~4文字編~】スペースキーでスタート"); 48 while (input != 0x20) 49 { 50 input = _getch(); 51 if (input == 0x20) 52 { 53 for (r = 9; r < 23; r++) 54 { 55 rns4[r] = r; 56 } 57 putchar('\n'); 58 miss = 0; 59 } 60 } 61 62 srand((unsigned int)time(NULL)); 63 shuffle(rns4, 23); 64 start = clock(); 65 66 for (j = 0; j < 20; j++) 67 { 68 printf("\n第%d問\n", j + 1); 69 printf("【%s】を入力してください:"&moji4[rns4[j][0]]); // ←ここの[0] 70 for (i = 0; i < 4; i++) 71 { 72 while (1) 73 { 74 input = _getch(); 75 if (input == moji4[rns4[j][i]]) // ←ここの[i] 76 { 77 printf("%c", input); 78 break; 79 } 80 else 81 { 82 putchar('\n'); 83 miss++; 84 } 85 } 86 } 87 putchar('\n'); 88 } 89 break; 90 91 default: //5~7文字編は省略しています 92 break; 93 } 94 95 end = clock(); 96 req_time = (double)(end - start) / CLOCKS_PER_SEC; 97 printf("\n≪タイピング練習プログラム終了。≫\n Time:%1f秒/Miss:%d回\n\n", req_time, miss); 98 printf("もう一度挑戦しますか?(YESはスペースキー/NOはスペースキー以外を入力)"); 99 retry = _getch(); 100 puts("\n"); 101 102 } while (retry == 0x20); 103 104 return 0; 105}

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/17 14:37