需要将字符串转换unsigned int
为C。我尝试使用sscanf()
和strtoul()
,但是在输入负数(例如将-123
它们反转)时都不会使用它们,并且不会发出有关错误的信号。
我的意思是,那strtoul(-1)
将返回,UNSIGNED_INT_MAX - 1
而不是错误。
我需要一些可以做到的事情:
“ 123”-很好
“ -123”-错误
“ wewe”-错误
“ 123wew”-错误
您可以尝试检查字符串中的所有单个字符,以确保它们是数字(isdigit()
是您的朋友)-然后,如果通过,则调用strtoul。有人可能会争辩说您可以进行正则表达式调用或执行其他操作-但最终,必须进行某些检查。
unsigned int convert(char *st) { char *x; for (x = st ; *x ; x++) { if (!isdigit(*x)) return 0L; } return (strtoul(st, 0L, 10)); }
(如果字符串无效,我将“返回零”-您必须根据自己的喜好更改行为”)