Language: C

#include<stdio.h>
int iskaibun(int N, char *str){
	char *reverse;
	int count = 0;
	for(int i=0; i < N; i++)
		reverse[i] = str[N-i-1];
	for(int i=0; i < N; i++){
		if(str[i] == reverse[i])
			count++;
	}
	if(count == N)
		return 1;
	else
		return 0;
}
int wordlength(char *str){
	int i = 0;
	while(str[i] != '0'){
		count++;
		i++;
	}
}
int main(){
	char *str;
	scanf("%s", str);
	char *sub_str1, *sub_str2;
	int len = wordlength(str);
	for(int i=0; i < (len-1)/2; i++)
		sub_str1[i] = str[i];
	for(int i=(len+3)/2-1; i < len; i++)
		sub_str1[i-(len+3)/2-1] = str[i];
	if(iskaibun(str)*iskaibun(sub_str1)*iskaibun(sub_str2)==1)
		printf("Yes");
	else
		printf("No");
	return 0;
}

Compiler output:
main.c: In function 'wordlength':
main.c:19:17: error: 'count' undeclared (first use in this function)
   19 |                 count++;
      |                 ^~~~~
main.c:19:17: note: each undeclared identifier is reported only once for each function it appears in
main.c: In function 'main':
main.c:32:21: error: passing argument 1 of 'iskaibun' makes integer from pointer without a cast [-Wint-conversion]
   32 |         if(iskaibun(str)*iskaibun(sub_str1)*iskaibun(sub_str2)==1)
      |                     ^~~
      |                     |
      |                     char *
main.c:2:18: note: expected 'int' but argument is of type 'char *'
    2 | int iskaibun(int N, char *str){
      |              ~~~~^
main.c:32:12: error: too few arguments to function 'iskaibun'
   32 |         if(iskaibun(str)*iskaibun(sub_str1)*iskaibun(sub_str2)==1)
      |            ^~~~~~~~
main.c:2:5: note: declared here
    2 | int iskaibun(int N, char *str){
      |     ^~~~~~~~
main.c:32:35: error: passing argument 1 of 'iskaibun' makes integer from pointer without a cast [-Wint-conversion]
   32 |         if(iskaibun(str)*iskaibun(sub_str1)*iskaibun(sub_str2)==1)
      |                                   ^~~~~~~~
      |                                   |
      |                                   char *
main.c:2:18: note: expected 'int' but argument is of type 'char *'
    2 | int iskaibun(int N, char *str){
      |              ~~~~^
main.c:32:26: error: too few arguments to function 'iskaibun'
   32 |         if(iskaibun(str)*iskaibun(sub_str1)*iskaibun(sub_str2)==1)
      |                          ^~~~~~~~
main.c:2:5: note: declared here
    2 | int iskaibun(int N, char *str){
      |     ^~~~~~~~
main.c:32:54: error: passing argument 1 of 'iskaibun' makes integer from pointer without a cast [-Wint-conversion]
   32 |         if(iskaibun(str)*iskaibun(sub_str1)*iskaibun(sub_str2)==1)
      |                                                      ^~~~~~~~
      |                                                      |
      |                                                      char *
main.c:2:18: note: expected 'int' but argument is of type 'char *'
    2 | int iskaibun(int N, char *str){
      |              ~~~~^
main.c:32:45: error: too few arguments to function 'iskaibun'
   32 |         if(iskaibun(str)*iskaibun(sub_str1)*iskaibun(sub_str2)==1)
      |                                             ^~~~~~~~
main.c:2:5: note: declared here
    2 | int iskaibun(int N, char *str){
      |     ^~~~~~~~