我遇到一种情况,当我输入"1111:2222"
和"1111:"
或":2222"
时。
当它是"1111:2222"
时-我只打印它。
当它是"1111:"
时-我需要为b = 0
设置一个默认值,或者为:2222
设置一个默认值。
请,我应该如何处理此案? (我只有一个a = 0
符号,我处理了这种情况,因为它不重要所以不显示它)
:
答案 0 :(得分:5)
分段错误的原因是将%s
的整数值传递为printf()
格式。然后printf()
将数字解释为指向字符串的指针。
它们实际上不是指针,而是整数(在这种情况下为小整数),因此会发生奇怪位置的读取,从而引发细分错误。
通过将%s
更改为%d
或其他采用整数的格式来解决此问题之后,此代码将无法处理:2222
的情况并将2222
分配给{{1 }},而不是所需的a
。
这是因为b
删除了分隔符中包含的前缀字符。
因此,看来您必须检查自己的第一个字符是否为strtok()
才能解决这种情况。