Witam napisałem taki oto program który za zadanie ma z podanego tekstu wybrać litery, liczby i inne znaki. Litery i liczby wybiera bezproblemowo problem pojawia się przy innych znakach. Próbowałem kilku sposobów żaden nie chce poprawnie wybierać innych znaków. Proszę o pomoc. Z góry dziękuje.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int funkcja(char *t, int n);
main()
{
int n,i,a,b,c;
char *tekst;
printf("Podaj dlugosc tekstu jaki chcesz wprowadzic ");
scanf("%d", &n);
tekst = (char*) malloc(n*sizeof(char));
printf("Podaj tekst ");
fflush(stdin);
gets(tekst);
if(strlen(tekst) > n)
{
printf("\n\n--------------------podales za dlugi tekst------------------\n");
printf("------------nie wszystkie elementy zostaną zliczone---------\n\n");
}
a=funkcja(tekst,n);
printf("\n Długość tekstu %d \n", a);
}
int funkcja(char *t, int n)
{
int i,m=0,y=0,u=0;
char *litery;
char *liczby;
char *inne;
litery = (char*) malloc(n*sizeof(char));
liczby = (char*) malloc(n*sizeof(char));
inne = (char*) malloc(n*sizeof(char));
for(i=0; i<n; i++)
{
if(*(t+i) >= 'A' && *(t+i) <= 'Z' || *(t+i)>='a' && *(t+i) <='z')
{
*(litery+m) = *(t+i);
*(litery+(m+1)) = '\0';
m++;
}
else
{
*(litery+i) = '\0';
*(inne+u) = *(t+i);
u++;
}
if(*(t+i) >= '0' && *(t+i) <= '9')
{
*(liczby+y) = *(t+i);
*(liczby+(y+1)) = '/0';
y++;
}
else
{
*(liczby+i) = '\0';
*(inne+u) = *(t+i);
u++;
}
}
printf("\nIlosc liter wynosi %d\n", m);
puts(litery);
printf("\nIlosc cyfr wynosi %d\n", y);
puts(liczby);
printf("\nIlosc innych znakow wynosi %d\n", u);
puts(inne);
return (m+y+u);
}