子串复制,输出是null,求解答

输出咋是null?求解答,用c语言解释一下,搜到有用指针的,还没学过看不懂

img

img

img

首先返回值类型错误,其次返回函数内局部变量也是错误的
改为用参数传递一个数组,用来接收截取的子串

void f(char a[], int m, int n,char b[])
 { 
    int i, j; 
    i = m - 1; 
    j = 0; 
   while (i < n && j <= n - m) 
  { 
    b[j] = a[i];
    i++; 
    j++;
  } 
} 
int main() 
{ 
     char a[100],b[100] = {0}; 
     int m, n; 
     gets(a); 
      scanf("%d", &m); 
      n = strlen(a);
      if (n > m) 
      { 
              f(a,m,n,b);
              printf("%s",b); 
      }
      if (n == m)
      { 
          printf(" "); 
      } 
     if (n < m) 
     { 
            printf("Data error!"); 
     } 
    return 0; 
}