如何在两者之间输入两个整数?

时间:2016-06-30 10:46:45

标签: c scanf

我想输入图书信息,其中一个信息是图书出版的月份和年份。

该程序假设使用以下格式阅读:02-2012

表明02是月份,2012是年份。

printf("Enter month and year book publish:\n");
scanf("%d[^-]%d",&book[i].month,&book[i].year);

我尝试过这样做,但它不起作用。

4 个答案:

答案 0 :(得分:4)

诀窍是将输入转换为您想要的格式,这可以通过scanf强制输入格式来完成。

scanf("%d-%d", &book[i].month, &book[i].year);

两个%d之间的短划线会吞下去' - '由用户输入。

答案 1 :(得分:0)

可能的解决方案:

char temp;
scanf("%d%c%d", &book[i].month,&temp,&book[i].year);

如果temp包含破折号,您可以稍后验证输入检查。

答案 2 :(得分:0)

可能你正在寻找这个,

scanf("%d-%d,&book[i].month,&book[i].year);

这将忽略输入中的-

答案 3 :(得分:0)

使用"%n"检测完整解析

printf("Enter month and year book publish:\n");
int n = 0;
scanf("%d-%d%n", &book[i].month, &book[i].year, &n);
if (n) Success();

更好的是,使用fgets()而不是scanf()

char buf[100];
fgets(buf, sizeof buf, stdin);
int n = 0;
sscanf(buf, "%d-%d %n", &book[i].month, &book[i].year, &n);
// Also detects that trailing junk after the 2nd number does not exist.
if (n && buf[n] == '\0') Success();