Есть небольшие ошибки при работе со строками в стиле C и индексами массива. Немного переписал функцию, вроде работает.
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
void func(char a[])
{
int startIndex = 0;
int endIndex = 0;
for (int i = 0; i < strlen(a); i++)
{
int num = 0;
int numcount = 0;
if (a[i] >= '0' && a[i] <= '9')
{
// Ищем начальный и конечный индексы числа.
startIndex = i;
endIndex = strlen(a) - 1; // вычитаем 1 т.к. исключаем 0-символ.
for (int j = startIndex; j < strlen(a); j++)
{
if (a[j] < '0' || a[j] > '9')
{
endIndex = j - 1;
break;
}
}
// формируем число.
char number[100];
int k = 0;
for (int l = startIndex; l <= endIndex; l++)
{
number[k] = a[l];
k++;
}
number[k] = '\0'; // Строки в стиле C должны заканчиваться 0-символом.
printf("%d\n", atoi(number));
i = endIndex;
}
}
}
int main()
{
char f[100] = "aaa010101bbb343ccc";
func(f);
}