Привет у меня есть следующий код для преобразования строки целого числа в целое число, это код:C++ возвращает отрицательную строку
#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 возвращение, так как вы никогда не справиться с «-» Charactor. самый простой способ: перед возвратным выходом добавить if (str [0] == '-') reutrn -outout; else return output; –
@ALan, как вы проверяете 'x-5' то? – billz
@billz, о да, если x-5 следует рассматривать как значение nagetive, я не могу проверить. Это зависит от предела входной строки, или мы можем моделировать более сложный случай, такой как «xy - 5-6», и кажется ... Я не знаю правила ... tks catching. –