前提・実現したいこと
C言語とncursesでタイピング練習ソフトを作っています。
英単語が画面に表示されており、キーボードからその単語を入力すると赤文字に変化し、その単語の文字を全て入力し終わると次の文字が表示されるようにしたいです。
ex hogehogeと表示されていて、hoと入力したときの場合
hogehoge(hoが赤文字)
ソースコード
C
1#include <stdio.h> 2#include <ncurses.h> 3#include <stdlib.h> 4#include <string.h> 5#include <unistd.h> 6#include <locale.h> 7#include "type_pra.h" 8 9#define LEN 2048 10 11void start_type(void){ 12 int pra_x,pra_y; 13 FILE *fp; 14 char fname[] = "type.txt"; 15 char str[LEN]; 16 char pra_ch; 17 int i=0; 18 19 20 clear(); 21 refresh(); 22 noecho(); 23 getmaxyx(stdscr, pra_y, pra_x); 24 25 fp = fopen(fname,"r"); 26 27 if(fp == NULL){ 28 fprintf(stderr,"%s file not open\n", fname); 29 exit(EXIT_FAILURE); 30 } 31 32 i = 0; 33 while(fgets(str, LEN, fp) != NULL){ 34 mvprintw(pra_y/2-10, pra_x/2, "%s", str); 35 refresh(); 36 do{ 37 pra_ch = getchar(); 38 if(pra_ch == str[i]){ 39 i++; 40 addch(str[i]|COLOR_RED); 41 } 42 }while(pra_ch != ' '); 43 44 } 45 pra_ch = getchar(); 46 while(pra_ch != '0'){ 47 start_type(); 48 pra_ch = getchar(); 49 } 50 fclose(fp); 51}
試したこと
addch関数を用いて文字の色を赤にしようと試みましたが変わりませんでした。
ソースコードに貼ってあるコードは、スペースを押すと次の文字に遷移します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/25 05:34