Всем привет! Прошу помощи, дали такое задание: "Программа, которая читает строку длиной до 20 символов от пользователя (необходимо выяснить, не превышает ли строка заданную длину, если да, то нужно ввести заново), подсчитывает и перечисляет количество гласных, согласных, знаков препинания, чисел и других символов (через запятую). Пример: слово Auto, гласные: 3 - A, u, o и т. д." .
Код на поиск и подсчет гласных, согласных и т.д. уже есть. Не знаю как теперь вывести все посчитанные символы из строки, и как поставить условие что, если строка больше 20 символов, то надо ввести ее заново? Помогите пожалуйста.
#include <stdio.h>
#include <string.h>
#define N 21
int main(){
char str[N];
const char vovels[]="eyuioaEYUIOA";
const char consonants[]="qwrtpsdfghjklzxcvbnmQWRTPFGHJKLZXCVBNM";
char digits[]="0123456789";
const char punctuation[]=".,:;!?\"()-";
const char symbols[]="@#$%^&*{}[]<>_+=\'¹%|\\/`~";
const char spaces[]=" ";
int v, c, d, p, s, sp;
v = c = d = p = s = sp = 0;
printf("Enter a string no more than 20 symbols :\n\n");
gets(str);
for (int i=0; str[i] != '\0'; i++)
if (strchr(vovels,str[i])) v++;
else if (strchr(consonants,str[i])) c++;
else if (strchr(digits,str[i])) d++;
else if (strchr(punctuation,str[i])) p++;
else if (strchr(symbols,str[i])) s++;
else if (strchr(spaces,str[i])) sp++;
printf("\nVowels: %d\n", v);
printf("\nConsonants: %d\n", c);
printf("\nDigits: %d \n", d);
printf("\nPunctuation: %d\n", p);
printf("\nSymbols: %d\n", s);
printf("\nSpaces: %d\n", sp);
return 0;
}