我有一个学校的项目,在其中,我需要得到一个四位数字,然后立即继续没有输入。例如:"输入一个数字:1424"然后它就会继续,你不能再输入数字了,因为不需要输入按键。
我尝试了scanf("%4d",&num);
,但它等待了Enter键。
还有一个限制是......我不能在这个项目中使用字符串,因此所有解决方案都必须没有字符串。
答案 0 :(得分:0)
对于阅读4位数字,您可能希望使用char * fgets ( char * str, int num, FILE * stream );来完全按照您的要求进行操作。您不应该使用scanf进行交互式输入,您可以在此article
中找到原因由于您在ascii中输入输入,因此您已经使用了字符串(字符数组)。
答案 1 :(得分:0)
在没有按下Enter键的情况下组织输入的唯一方法是来自getch
标题的函数getche
和conio.h
,我想这不是C / C ++标准。所以POSIX标准名称是_getch
和_getche
。
使用这些功能,您将阅读字符 - 如果您单独处理每个char
,则不是字符串。
<强>更新强>
我的解决方案是:
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
int main(void)
{
char ch; // to store an input - single char
int number = 0; // to make number from inputs
printf("Enter a number: ");
int digits_cnt = 0;
while (digits_cnt < 4)
{
ch = _getche();
if (isdigit(ch))
{
number *= 10; // add an order to number
number += ch - '0'; // add a decimal digit to number
digits_cnt++; // count this digit to stop loop
}
}
// just to check result
printf("\nThe number %d was entered.\n", number);
return 0;
}
我假设所有4位数字都应该成为一个数字,但是,你可能需要用它们做其他的事情。