Hitta heltal i en textsträng och skriv ut talet
Uppgift:
Write a function which removes from string all non-digit characters and parse the remaining to number.
E.g: "hell5o wor6ld" -> 56
Synliga testfall:
#include <criterion/criterion.h>
int get_number_from_string(const char *src);
Test(CoreTests, ShouldPassAllTheTestsProvided) {
cr_assert_eq(get_number_from_string("1"), 1);
cr_assert_eq(get_number_from_string("123"), 123);
cr_assert_eq(get_number_from_string("this is number: 7"), 7);
cr_assert_eq(get_number_from_string("$100 000 000"), 100000000);
cr_assert_eq(get_number_from_string("hell5o wor6ld"), 56);
cr_assert_eq(get_number_from_string("one1 two2 three3 four4 five5"), 12345);
}
Mitt försök att lösa uppgiften:
int get_number_from_string(const char *src) {
int decNumb = 0;
int count = 0;
for(int i = strlen(src)-1; i>=0; i--){
if((src[i] - 48) < 9 && ((src[i] - 48) >= 0)){
decNumb += ((src[i]-48)*pow(10,count));
count++;
}
}
return decNumb;
}
Koden passerar 6 stycken test, men på 7:e testet får jag följande felmeddelande:
"The expression (get_number_from_string(buffer)) == (get_number_from_string_tester(buffer)) is false."
Fråga:
Är det några viktiga testfall som jag missar? Jag testade att byta datatyp på decNumb från int till long för att kunna lagra större tal, men det hjälpte inte.
Siffran 9 verkar inte få vara med.
Laguna skrev:Siffran 9 verkar inte få vara med.
Där satt den! :D Nu passerar koden alla test. Tack