【发布时间】:2017-09-30 13:15:21
【问题描述】:
我正在尝试开发一个接受一行用户输入的 C 函数,例如这一行:
1X 1X 3Y 1Z 1Z 1Z 1Z 2X 2X
(编辑:这只是用户将输入的任意示例。在实际程序中,他们可以输入 1 到 48 个数字字符对之间的任何位置。)
这个想法是用户将插入这一整行,并将其分成 9 个部分(每个数字和字符对是一个部分)。然后,数字和字符对也将相互拆分(我正在考虑这部分,它们都属于包含 numValue 和 charValue 的结构)。
我可以使用什么来拆分用户的输入?我对 C 比较陌生。
【问题讨论】:
-
scanf() 会做到这一点,虽然我不太喜欢那个功能。读入整个字符串然后使用 sprintf() 也可以稍加小心。我会留给其他人填写详细信息。或者你可以直接谷歌这些函数然后从那里开始。
-
欢迎来到 Stack Overflow。请尽快阅读About 和How to Ask 页面。 What have you tried?你为这个功能设想了什么样的界面?函数会分配内存还是用户会这样做?如果只有 8 个数字字符对会发生什么? 10个或更多?数字可以大于 9 吗?小于零?总是一个字母吗?它总是字母还是标点符号?如果您将
98作为一个字段,那么8是字符吗?等等。 -
@MichaelDorgan:你说
sprintf()——你是说sscanf()吗?如果你很快,你可以改变它。 -
不够快 - 哈哈。但是,是的 - 就是这个想法。
-
@JonathanLeffler:谢谢。糟糕,9 位数字字符对只是一个例子。在该程序中,用户将能够输入任意数量的对,范围从 1 对到 48 对。 (我将对没有对的情况和超过 48 对的情况进行错误检查)。在读取用户的所有输入之前,该程序无法知道用户将输入多少对。至于用户输入格式错误的数据,我也会检查。我只允许每对一个数字和一个字符。读取数据时将忽略所有其他组合。