本帖最后由 mxwawaawxm 于 2020-3-1 19:09 编辑
[C] 纯文本查看 复制代码 #include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define MAXCNT 3
/*--- C语言的关键字和库函数 ---*/
const char *cstr[] = {
"auto", "break", "case", "char",
};
void input_ch(const char *str, int *mistake);
void clang_train(const char *mes, const char **cstr, int len);
int main(int argc, const char *argv[])
{
srand(time(NULL));
clang_train("C语言的单词", cstr, sizeof(cstr)/sizeof(cstr[0]));
return 0;
}
void clang_train(const char *mes, const char **cstr, int len)
{
int i;
int rand_idx;
int mistake=0;
printf("\n练习%d个%s。\n", MAXCNT, mes);
printf("按下空格键开始。\n");
while (getch()!=' ') {
;
}
for (i=0;i<MAXCNT;i++) {
rand_idx=rand()%len;
input_ch(*(cstr+rand_idx), &mistake);
}
printf("\r题目:%d字符/错误:%d次\n", MAXCNT*10, mistake);
}
/*依次输入单个字符*/
void input_ch(const char *str, int *mistake)
{
int j=0;
int ch;
while (*str!='\0') {
putch('\r');
ch=getch();
if (ch==*str) {
j++;
str++;
printf("\r%s%*s", str, j, "");
} else {
(*mistake)++;
printf("\a");
}
}
}
症状如下,到这里始终运行不下去。本来是设计成按下空格,就继续下面的代码。可是无论按什么键,都走不下去
[C] 纯文本查看 复制代码 printf("按下空格键开始。\n");
while (getch()!=' ') {
;
}
初步测试,应该是这个函数出错了
[C] 纯文本查看 复制代码 void input_ch(const char *str, int *mistake)
当我注释掉,就可以了
可是编译也通过,运行也没报错。单独测试这个函数,也可以。到底哪里出错了
|