因此,我想了解与输入有关使用strtol的大多数主题,但没有找到我要找的确切问题。
基本上,我必须在C(m-ary树)中构建一些数据结构,然后我们才能从文本文件的行中接收顶点的数据。
现在,例如,行号7表示顶点号5,并且该行必须仅包含正整数,包括零,仅由一个空格分隔,这些整数实际上是该行顶点的子代。
现在,我当然是使用strtol来获取整数值,然后遍历下一个值并接收它们,但是它并没有涵盖所有可能出现的情况。
该行可能无效,例如“ 1.2.3”无效,但是我的strtol将获得第一个值1,转到下一个值,将其视为0,这是错误的。
可能还会出现的另一个问题是数字不是整数而是类似-2.5的双精度数,然后再次将其视为2和0,这必须是无效输入的错误。
因此,我想使用strtok通过空格将整数字段拆分,然后在每个strtol上调用,但同样该行可能是2.5 3.5,并且strtol将其视为2 0 3 0,这是不正确的。
我不确定同时使用strtol和strtok是否如此优雅。
您能给我解释一些其他方法来很好地解决此问题吗?
假设: 1.行的最大长度为1024个字符。 2.每行表示一个顶点,每个值均由单个空格分隔。 我们不能假设的结果:1.值不一定有效,我们需要验证我们拥有的值是无符号整数。例如,输入“ 1.2.3”无效。 2.可能在一行中出现重复的顶点,并且该顶点被视为无效输入。从文件等进行读取的整个过程必须适合Windows和Linux。如果输入无效,我们必须打印到标准错误“ Invalid input \ n”并返回EXIT_FAILURE值。