这串C代码哪里出错了
本帖最后由 mxwawaawxm 于 2020-3-1 19:09 编辑#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));
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");
}
}
}
症状如下,到这里始终运行不下去。本来是设计成按下空格,就继续下面的代码。可是无论按什么键,都走不下去
printf("按下空格键开始。\n");
while (getch()!=' ') {
;
}
初步测试,应该是这个函数出错了
void input_ch(const char *str, int *mistake)
当我注释掉,就可以了
可是编译也通过,运行也没报错。单独测试这个函数,也可以。到底哪里出错了{:301_1007:}
不是程序的问题,程序其实一直在执行,是你这个难度太高了,我加了这行代码调试了下。
每次要猜出是哪一个字符串,而且只能靠一个\a的提示音。 你在做什么东西呢 非酋的春天 发表于 2020-2-29 22:16
你在做什么东西呢
大致是
const char *cstr[] = {"auto", "break", "case", "char",};
1、大致是先有一个字符指针数组,里面元素分别指向一些字符串
2、用户输入空格表示开始,进入第3步骤。否则不断循环
while (getch()!=' ') {
;
}
3、随机找出一项字符串,让用户输入。比如auto,用户逐个输入字符。输错提示响铃声,输对则打印后面的字符 本帖最后由 jyyjyy 于 2020-2-29 22:58 编辑
可以运行
@mxwawaawxm 你要的功能是什么
/*依次输入单个字符*/
void input_ch(const char *str, int *mistake)
{
int j=0;
int ch;
printf("\r%s",str);
while (*str!='\0') {
putch('\r');
ch=getche();
if (ch==*str) {
j++;
str++;
printf("\r%s", str);
} else {
(*mistake)++;
printf("\a\r%s", str);
}
}
} 庸人误我 发表于 2020-2-29 22:58
不是程序的问题,程序其实一直在执行,是你这个难度太高了,我加了这行代码调试了下。
每次要猜出是哪一 ...
谢谢。明白了。我又犯了这么低端的错误{:301_971:}
少了一行代码
printf("\r%s\r", *(cstr+rand_idx));
我还以为卡在这里不动了
while (getch()!=' ') {
;
}
你说的调试,是用Visual Studio调试吗 jyyjyy 发表于 2020-2-29 22:50
可以运行
@mxwawaawxm 你要的功能是什么
/*依次输入单个字符*/
谢谢
6楼给出了缺漏的地方 善用編譯器的Debug功能
實在不熟悉,可以自己手動加一些printf
這樣可以幫助判斷程式碼跑到那裡
避免先入為主的人工判斷 absman1972 发表于 2020-3-1 00:55
善用編譯器的Debug功能
實在不熟悉,可以自己手動加一些printf
這樣可以幫助判斷程式碼跑到那裡
用的是notepad++,不知道怎么调试{:301_1007:}
页:
[1]
2