#include <stdio.h>
int SumStr( const char * str) { // added const
int sum = 0 , digit = 0 ; // removed i
while ( * str) {
digit = 0 ;
while ( * str && * str >= '0' && * str <= '9' ) { // swapped order of conditions
digit = digit * 10 + ( * str - '0' ) ;
str++;
}
if ( digit > 0 ) sum += digit;
else str++; // added else
}
return sum;
}
int main( void ) {
char s[ 42 ] ;
strcpy ( s
, "a11b3" ) ; printf ( "SumStr(\" %s\" ) is %d.\n " , s
, SumStr
( s
) ) ; strcpy ( s
, "" ) ; printf ( "SumStr(\" %s\" ) is %d.\n " , s
, SumStr
( s
) ) ; strcpy ( s
, "4" ) ; printf ( "SumStr(\" %s\" ) is %d.\n " , s
, SumStr
( s
) ) ; strcpy ( s
, "42" ) ; printf ( "SumStr(\" %s\" ) is %d.\n " , s
, SumStr
( s
) ) ; strcpy ( s
, "f" ) ; printf ( "SumStr(\" %s\" ) is %d.\n " , s
, SumStr
( s
) ) ; strcpy ( s
, "fo" ) ; printf ( "SumStr(\" %s\" ) is %d.\n " , s
, SumStr
( s
) ) ; strcpy ( s
, "7foo" ) ; printf ( "SumStr(\" %s\" ) is %d.\n " , s
, SumStr
( s
) ) ; strcpy ( s
, "73foo" ) ; printf ( "SumStr(\" %s\" ) is %d.\n " , s
, SumStr
( s
) ) ; strcpy ( s
, "foo9" ) ; printf ( "SumStr(\" %s\" ) is %d.\n " , s
, SumStr
( s
) ) ; strcpy ( s
, "foo10" ) ; printf ( "SumStr(\" %s\" ) is %d.\n " , s
, SumStr
( s
) ) ; strcpy ( s
, "1foo8" ) ; printf ( "SumStr(\" %s\" ) is %d.\n " , s
, SumStr
( s
) ) ; strcpy ( s
, "12foo4" ) ; printf ( "SumStr(\" %s\" ) is %d.\n " , s
, SumStr
( s
) ) ; strcpy ( s
, "1foo16" ) ; printf ( "SumStr(\" %s\" ) is %d.\n " , s
, SumStr
( s
) ) ; strcpy ( s
, "712foo3" ) ; printf ( "SumStr(\" %s\" ) is %d.\n " , s
, SumStr
( s
) ) ; strcpy ( s
, "foo5bar" ) ; printf ( "SumStr(\" %s\" ) is %d.\n " , s
, SumStr
( s
) ) ; strcpy ( s
, "foo88bar" ) ; printf ( "SumStr(\" %s\" ) is %d.\n " , s
, SumStr
( s
) ) ; return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgU3VtU3RyKGNvbnN0IGNoYXIgKnN0cikgeyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZGVkIGNvbnN0CiAgICBpbnQgc3VtID0gMCwgZGlnaXQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlZCBpCiAgICB3aGlsZSAoKnN0cikgewogICAgICAgIGRpZ2l0ID0gMDsKICAgICAgICB3aGlsZSAoKnN0ciAmJiAqc3RyID49ICcwJyAmJiAqc3RyIDw9ICc5JykgeyAvLyBzd2FwcGVkIG9yZGVyIG9mIGNvbmRpdGlvbnMKICAgICAgICAgICAgZGlnaXQgPSBkaWdpdCAqIDEwICsgKCpzdHIgLSAnMCcpOwogICAgICAgICAgICBzdHIrKzsKICAgICAgICB9CiAgICAgICAgaWYgKGRpZ2l0ID4gMCkgc3VtICs9IGRpZ2l0OwogICAgICAgIGVsc2Ugc3RyKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZGVkIGVsc2UKICAgIH0KICAgIHJldHVybiBzdW07Cn0KCmludCBtYWluKHZvaWQpIHsKICAgIGNoYXIgc1s0Ml07CglzdHJjcHkocywgImExMWIzIik7IHByaW50ZigiU3VtU3RyKFwiJXNcIikgaXMgJWQuXG4iLCBzLCBTdW1TdHIocykpOwoJc3RyY3B5KHMsICIiKTsgcHJpbnRmKCJTdW1TdHIoXCIlc1wiKSBpcyAlZC5cbiIsIHMsIFN1bVN0cihzKSk7CglzdHJjcHkocywgIjQiKTsgcHJpbnRmKCJTdW1TdHIoXCIlc1wiKSBpcyAlZC5cbiIsIHMsIFN1bVN0cihzKSk7CglzdHJjcHkocywgIjQyIik7IHByaW50ZigiU3VtU3RyKFwiJXNcIikgaXMgJWQuXG4iLCBzLCBTdW1TdHIocykpOwoJc3RyY3B5KHMsICJmIik7IHByaW50ZigiU3VtU3RyKFwiJXNcIikgaXMgJWQuXG4iLCBzLCBTdW1TdHIocykpOwoJc3RyY3B5KHMsICJmbyIpOyBwcmludGYoIlN1bVN0cihcIiVzXCIpIGlzICVkLlxuIiwgcywgU3VtU3RyKHMpKTsKCXN0cmNweShzLCAiN2ZvbyIpOyBwcmludGYoIlN1bVN0cihcIiVzXCIpIGlzICVkLlxuIiwgcywgU3VtU3RyKHMpKTsKCXN0cmNweShzLCAiNzNmb28iKTsgcHJpbnRmKCJTdW1TdHIoXCIlc1wiKSBpcyAlZC5cbiIsIHMsIFN1bVN0cihzKSk7CglzdHJjcHkocywgImZvbzkiKTsgcHJpbnRmKCJTdW1TdHIoXCIlc1wiKSBpcyAlZC5cbiIsIHMsIFN1bVN0cihzKSk7CglzdHJjcHkocywgImZvbzEwIik7IHByaW50ZigiU3VtU3RyKFwiJXNcIikgaXMgJWQuXG4iLCBzLCBTdW1TdHIocykpOwoJc3RyY3B5KHMsICIxZm9vOCIpOyBwcmludGYoIlN1bVN0cihcIiVzXCIpIGlzICVkLlxuIiwgcywgU3VtU3RyKHMpKTsKCXN0cmNweShzLCAiMTJmb280Iik7IHByaW50ZigiU3VtU3RyKFwiJXNcIikgaXMgJWQuXG4iLCBzLCBTdW1TdHIocykpOwoJc3RyY3B5KHMsICIxZm9vMTYiKTsgcHJpbnRmKCJTdW1TdHIoXCIlc1wiKSBpcyAlZC5cbiIsIHMsIFN1bVN0cihzKSk7CglzdHJjcHkocywgIjcxMmZvbzMiKTsgcHJpbnRmKCJTdW1TdHIoXCIlc1wiKSBpcyAlZC5cbiIsIHMsIFN1bVN0cihzKSk7CglzdHJjcHkocywgImZvbzViYXIiKTsgcHJpbnRmKCJTdW1TdHIoXCIlc1wiKSBpcyAlZC5cbiIsIHMsIFN1bVN0cihzKSk7CglzdHJjcHkocywgImZvbzg4YmFyIik7IHByaW50ZigiU3VtU3RyKFwiJXNcIikgaXMgJWQuXG4iLCBzLCBTdW1TdHIocykpOwoJcmV0dXJuIDA7Cn0K