Look carefully at your function declaration
char *slova(const char *s){
            ^^^^^^^^^^^^^
Its parameter has the pointer type const char *. Thus in this statement
new = (char *)malloc(sizeof(s));
the expression sizeof(s) yields the size of a pointer that usually is equal to 8 or 4 bytes depending on the used system.  That is this expression does not provide the length of the passed string.
Also the body of this loop
for (int i = 0; i != '\0'; i++)
never gets the control because the condition i != '\0' at once evaluates to false because the variable i was initialized by zero.
The function can look the following way as it is shown in the demonstrative program below. It does not use functions from the header <string.h>.
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
char * slova( const char *s )
{
    size_t n = 0;
    
    for ( const char *t = s; *t != '\0'; ++t )
    {
        if ( isalpha( ( unsigned char )*t ) ) ++n;
    }
    
    char * result = malloc( ( n + 1 ) *sizeof( char ) );
    
    if ( result != NULL )
    {
        char *p = result;
        for ( ; *s; ++s)
        {
            if ( isalpha( ( unsigned char )*s ) )
            {
                *p++ = *s;
            }
        }
        
        *p = '\0';
    }
    
    return result;
}   
int main(void) 
{
    const char *s = "H#e#l#l#o W#o#r#l#d";
    
    char *p = slova( s );
    
    if ( p ) puts( p );
    
    free( p );
    
    return 0;
}
The program output is
HelloWorld
If you are not allowed also to use functions from the header <ctype.h> then the function can look the following way as it is shown in the demonstrative program below.
#include <stdio.h>
#include <stdlib.h>
char * slova( const char *s )
{
    const char *upper_case = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    const char *lower_case = "abcdefghijklmnopqrstuvwxyz";
    
    size_t n = 0;
    
    for ( const char *t = s; *t != '\0'; ++t )
    {
        const char *letter = lower_case;
        
        if ( *t < lower_case[0] )
        {
            letter = upper_case;
        }
        
        while ( *letter && *letter < *t ) ++letter;
        
        if ( *letter == *t ) ++n;
    }
    
    char * result = malloc( ( n + 1 ) *sizeof( char ) );
    
    if ( result != NULL )
    {
        char *p = result;
        
        for ( ; *s; ++s)
        {
            const char *letter = lower_case;
            
            if ( *s < lower_case[0] )
            {
                letter = upper_case;
            }
            
            while ( *letter && *letter < *s ) ++letter;
            
            if ( *letter == *s )
            {
                *p++ = *s;
            }
        }
        
        *p = '\0';
    }
    
    return result;
}   
int main(void) 
{
    const char *s = "H#e#l#l#o W#o#r#l#d";
    
    char *p = slova( s );
    
    if ( p ) puts( p );
    
    free( p );
    
    return 0;
}
Again the program output is
HelloWorld