Каждый символ, который вы читаете в своей строке, является байтом (вы можете считать его числом от 0 до 255, и именно так компьютеры их обрабатывают), поэтому вам просто нужно проверить таблицу ascii, чтобы увидеть, к какой букве относится данная буква.
Каждый буквенно-цифровой символ находится в этом диапазоне: [48, 58] (для чисел), или [65, 90] (в верхнем регистре), или [97, 122] (в нижнем регистре).
Посмотрите на это:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 64
int isalphanum(char); /*states if a char is alphanumerical or not*/
char *getalphanum(char *, char*); /*modifies the second string to get the result*/
int main(void) {
char in[SIZE] = "Hello, W@#@#@#@#@#orl...,.,d!"; /*just a random to try out*/
char out[SIZE];
getalphanum(in, out);
printf("%s", out);
return 0;
}
int isalphanum(char a) {
if ((a >= 48) && (a <= 58))
return 1;
if ((a >= 65) && (a <= 90))
return 1;
if ((a >= 97) && (a <= 122))
return 1;
return 0;
}
char *getalphanum(char *s, char *t) {
if ((s == NULL) || (t == NULL)) /*tests if the strings are "handble"*/
return NULL;
int i = 0;
int j = 0;
char c;
while ((c = *(s + i)) != '\0') {
if (isalphanum(c)){
*(t + j) = c;
j++;
}
i++;
}
*(t + j) = '\0';
return t;
}
Этот код работает и очень прост и может быть улучшен, но есть все, что вам нужно.