我想知道是否有一些类似于scanf的功能允许在c中自定义输入。 我想要做的是当用户输入想要的日期时,每隔几个字符添加一个点。当用户想要确认他的输入时,他应该按回车键,并且该变量被保存在某处。
示例:用户正在输入11.04.2015。
当他输入11时,在控制台上添加了dot。在4和2015之后也是如此。
非常感谢您的回答。该平台是Windows
答案 0 :(得分:2)
快速解决方案,此处理日期格式为3块。
这在两个int之后添加.
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char ch;
char input[16];
char *p;
int i = 0;
int part = 0;
memset(input, 0, sizeof(input));
p = input;
system("stty raw -echo");
while(1)
{
ch = getchar();
if(ch == '~'){//terminate or come out of raw mode on "~" pressed
system("stty cooked sane");
return 0;
}
if (ch >= '0' && ch <= '9') {
*p++ = ch;
if (i++ == 1) {
if (part++ == 2) {
printf("\rdone: %s\n", input);
/* Finish your prog here*/
break;
}
*p++ = '.';
i = 0;
}
} else if (ch == '.') {
*p++ = ch;
i = 0;
part++;
}
printf("\r%s", input);
}
system("stty cooked sane");
return 0;
}
答案 1 :(得分:0)
这里有意的偏离主题的建议:不要以用户的方式进入。实现一个解析任何看起来像日期的函数,但请,永远不会自动放点,也不会自动分离d / m / y字段。如果您这样做,用户将无法复制粘贴日期并输入快捷方式(例如1.1.15),并且通常会对这样无能的ui设计师感到愤怒。第二,做得对(退格如何?非数字?逗号?点?)导致完全愚蠢的代码复杂性。除非你有严格要求,否则你只是把时间花在烦扰你的客户身上。
如果你有,对不起噪音!