我必须用 C 语言为类编写一个程序,一次读取一个字符,并且我们必须使用 scanf。我让它只使用键盘输入,但是,我的老师也将使用文件重定向来测试代码。
int end; //return value of scanf
int length1; //length of string exp1
char temp, //temp char for input
char exp1[81]; //string
printf ("Please enter in a regular expression:\n");
end = scanf ("%c", &temp);
while (temp != '\n' || end == 1) { //check if end of input
length1 = check(temp, length1, exp1); //returns length of exp1
end = scanf ("%c", &temp); //scan next char for loop
}
Run Code Online (Sandbox Code Playgroud)
我已经花了几个小时来解决这个小问题,试图解决这个问题,所以任何指示都会有所帮助。谢谢!
编辑:我尝试在 if 语句中使用 kbhit() 函数来检查他们是否输入了输入或者输入是否来自文件。但是,我没有 conio.h,在仍然使用 scanf 的同时还有其他选择吗?
小智 5
你的小范围问题已经得到解答,但让我给你一个好建议。如果您没有被迫scanf()在课堂上使用(即您正在编写真实的生产代码),那么
只要摆脱scanf(). 这是邪恶的。它不会做你认为它会做的事。
如果您想一次获取一个字符,请使用一次获取一个字符的函数。那就是fgetc(stdin)。
int c;
while ((c = fgetc(stdin)) != EOF) {
/* process `c' */
}
Run Code Online (Sandbox Code Playgroud)