Для начала есть опечатки
Char *e;
^^^^
While(*e!=0)
^^^^
{
if(isalnum(*e))
printf("%c",*e);
}
Вы имеете в виду
char *e;
while(*e!=0)
{
if(isalnum(*e))
printf("%c",*e);
}
Более того указатель e
не инициализирован. Он должен быть инициализирован строкой. Например,
char *e = "FaThima Hussain";
while(*e!=0)
{
if(isalnum(*e))
printf("%c",*e);
}
И, наконец, указатель внутри цикла не изменяется. Допустимый фрагмент кода может выглядеть следующим образом:
char *e = "FaThima Hussain";
while( *e!=0 )
{
if(isalnum(*e))
printf("%c",*e);
++e;
}
В состоянии цикла while есть символ, на который указывает указатель e, сравнивается с нулем, что фактически является нулевым завершающим символом. Поэтому было бы лучше написать
char *e = "FaThima Hussain";
while( *e != '\0' )
{
if(isalnum(*e))
printf("%c",*e);
++e;
}
Каждая строка в C включает и оканчивается нулевым символом в конце. Таким образом, в условии есть проверка, является ли это концом строки. Если нет, то введите в теле цикла.
При вызове функции isalnum вы должны привести символ к типу unsigned char, как того требует функция.
Вот демонстративный пример. program.
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char *e = "FaThima Hussain";
while( *e != '\0' )
{
if ( isalnum( ( unsigned char )*e ) )
printf( "%c", *e );
++e;
}
putchar ( '\n' );
return 0;
}
Вывод программы:
FaThimaHussain
То есть пустые символы не выводятся, поскольку они не являются буквенно-цифровыми символами.