wczytywanie ciągu znaków i wypisywanie znaku, który powtarza się najczęściej

0

Mam do napisania program wczytujący ciągu znaków i wypisujący znaku, który powtarza się najczęściej (bez sortowania). Próbuję coś tworzyć, tylko jakoś mi to nie idzie.
Jak na razie mam coś takiego.

#include <stdio.h>
#include <stdlib.h>
/*Wczytuje ciąg znaków i pisze znak, który powtarza się najczęściej (bez sortowania).*/
int main()
{
    int i, n;
    char *tablica = (char* ) malloc(n * sizeof(char));
    printf("Podaj ciag znakow: \n");
    for (i=0; i<n, i++)
        scanf("%c", &tablica[i]);





    free(tablica);

    return 0;
}

Tylko wydaje mi się to trochę bez sensu, bo użytkownik najpierw musiałby podać liczbę znaków. W sumie to chyba mogę dać górną granicę liczby znaków za n, tylko czy to ma sens?

1

Na pewno nie ma sensu to co teraz napisałeś bo nie wiadomo co to jest N.
Możesz stworzyć tablicę o rozmiarze np. 100 i wczytywać dane do niej albo użyć getline które zaalokuje pamięć za Ciebie, oczywiście pamiętając o zwolnieniu pamięci.

int main()
{
	char *line = NULL; 
	size_t nbytes = 0;
	// Powyższe zmienne zostaną zaktualizowane po zaalokowaniu pamięci

	printf("Podaj ciag znakow: \n");
	int bytes_read = getline(&line, &nbytes, stdin);
	if(bytes_read == -1)
	{
		// Błąd
	}
	else
	{
		printf("%s", line); // Wypisz to co wpisał użytkownik.
	}
	free(line); // Zwolnij zarezerwowany obszar pamięci.
	return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1