The header <stdio.h> already has a declaration of a function named remove.
int remove(const char *filename);
So the compiler issues an error because the identifier remove is declared two times with different types in the same file scope.
So rename your function as for example remove_copy.
Nevertheless the function implementation is wrong.
Within the loop
while(str[j++]!='\0'){
if(str[j]!=c)word[k++]=str[j];}
you are comparing a next element str[j]!=c after current due to the increment in the condition
str[j++]
The function can be declared and implemented the following way
char * remove_copy( char s1[], const char s2[], char c )
{
    char *p = s1;
    for ( ; *s2; ++s2 )
    {
        if ( *s2 != c ) 
        {
            *p++ = *s2;
        }
    }
    
    *p = '\0';
    return s1;
}  
Pay attention to that the function gets is unsafe and is not supported by the C Standard any more. Instead use the standard function fgets.
Here is a demonstrative program.
#include <stdio.h>
#include <string.h>
char * remove_copy( char s1[], const char s2[], char c )
{
    char *p = s1;
    for ( ; *s2; ++s2 )
    {
        if ( *s2 != c ) 
        {
            *p++ = *s2;
        }
    }
    
    *p = '\0';
    return s1;
}  
int main(void) 
{
    enum { N = 30 };
    char str[N], word[N];
    char c;
    
    printf( "Enter a string: " );
    fgets( str, N, stdin );
    
    str[ strcspn( str, "\n" ) ] = '\0';
    
    printf( "Enter a character to remove from the string: " );
    c = getchar();
    
    printf( "The result string is \"%s\"\n", remove_copy( word, str, c ) );
    
    return 0;
}
Its output might look like
Enter a string: I am learning C++
Enter a character to remove from the string: +
The result string is "I am learning C"