Есть строка, в которой через запятую расположены цифры. Нужно создать массив из уникальных сочетаний цифр и подсчитать, сколько данных сочетаний входит в строку.
#define N 64
void main(int argc, char* argv[]) {
char *nf, chm[N][3], *t = "12,34,56,78,90,12,34,50,90,13,12,12,12";
char b[3] = " ";
int nmax = 0, i = 0, j = 0, np[N];
for(i=0; i<N; i++){
np[i] = 0;
chm[i][0] = '\0';
}
nmax = strlen(t)/3;
for(i=0; i<nmax; i++) {
strncpy(b, t, 2);
if((nf=strstr(chm, b))!=NULL) {
np[(nf-chm)/3]++; // << вот здесь, видимо, ошибка
}
else {
strncat(chm[j], b, 2);
np[j]++;
j++;
}
t+=3;
}
for(i=0; i<j; i++) {
printf("%s\t%i\n", chm[i], np[i]);
}
_getch();
}
Уникальные сочетания цифр определяются правильно, а вот подсчет их общего числа в строке - нет. Видимо, я неправильно ищу в массиве. В моем случае (*t = "12,34,56,78,90,12,34,50,90,13,12,12,12) должно быть 5 сочетаний 12, 2 сочетания 34 и т.д. Строка приведена для примера, могут быть определенные сочетания букв, букв и цифр и др., в зависимости от потребностей пользователя. Мне важно понять, как подсчитать количество встречающихся заданных сочетаний в тексте, хотя бы для моего упрощенного примера. Как искать в массиве? Мне хотелось бы уникальные сочетания помещать в массив. Можно, конечно, помещать в одномерный массив с символом-разделителем, но хотелось бы строку массива
связать с элементов массива
для дальнейшей обработки.