【发布时间】:2013-09-30 01:43:36
【问题描述】:
您好,我有以下代码将字符串整数转换为整数,这些是代码:
#include <stdio.h>
int str_to_int(char* str) {
int output = 0;
char* p = str;
for (int i=0;str[i]!='\0';i++) {
char c = *p++;
if (c < '0' || c > '9')
continue;
output *= 10;
output += c - '0';
}
return output;
}
int main(){
printf("%d\n", str_to_int("456xy"));
printf("%d\n", str_to_int("32"));
printf("%d\n", str_to_int("-5"));
return 0;
}
但是有些如何printf("%d\n", str_to_int("-5")); 有些如何返回 5 而不是 -5,我哪里错了?谢谢
【问题讨论】:
-
当然返回-5,因为你从不处理'-'字符。最简单的方法:在返回输出前,加上 if(str[0] == '-') reutrn -outout;else return output;
-
@ALan 那么你如何检查
x-5? -
@billz,哦,是的,如果 x-5 应该被视为负值,我无法检查。这取决于输入字符串的限制,或者我们可以模拟更复杂的情况,例如“xy--5-6”,并且似乎......我不知道规则...... tks catching。
标签: c++ string algorithm integer