Я хочу получить все числа из определенной строки, но эти цифры могут иметь длину более одной цифры as (15, 587, ... exc). Вот то, что я сделал «свой собственный код»:Извлечь все числа из N цифр из строки в C
int firstIndxOfNumb(char* str, int startIndx, int len) {
int i, val;
i = startIndx;
while (str[i] && i < len) {
val = str[i];
if (isdigit(val))
return i;
i++;
}
return -1;
}
int lastIndxOfNumb(char* exp, int len, int indx1){
int i, curr;
for(i = indx1; i < len; i++){
curr = exp[i];
if(!isdigit(curr)){
return --i;
}
}
return 0;
}
int getNumb(char* exp, int len, int* indx1){
int indx2 = lastIndxOfNumb(exp, len, *indx1);
printf("indx1:%d\tindx2:%d\n", *indx1, indx2);
char temp[indx2-*indx1];
strncpy(temp, exp+*indx1, (size_t) (indx2-*indx1+1));
*indx1 = firstIndxOfNumb(exp, indx2+1, len);
return atoi(temp);
}
void main() {
char *s = "())(15*59";
int len = strlen(s);
int indx1;
indx1 = firstIndxOfNumb(s, 0, len);
printf("%d\n", getNumb(s, len, &indx1));
printf("\n%d", getNumb(s, len, &indx1));
}
И цель получает два числа (15, 59). Первый вызов был в порядке, но второй не был «бесконечным циклом» со значениями index1: 7 okay index2: 0 не в порядке! Можете ли вы помочь мне сделать это работает .....
Значения выведенную printf(..);
в getNum();
функции ....
Вы можете использовать 'strtoi' вместо' atoi'. Он возвращает число _and_ количество прочитанных символов. Экономия времени для вас. –
нет отрицательного числа в строке? – BLUEPIXY
@BLUEPIXY Существует –