C语言 如何输入两个整数,中间有一个破折号



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

程序假定以以下格式读取它:02-2012

,其中02为月份,2012为年份。

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

我试过这样做,但它不工作

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

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

两个%d之间的破折号将吞噬用户输入的'-'。

可能的解决方案:

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

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

也许你正在寻找这个,

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

这会忽略输入中的-

使用"%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] == '') Success();

相关内容

  • 没有找到相关文章

最新更新