请问这个代码错在哪里啊

img

img

题是输入一个数,删除字符串前这个数长度的星号

img


#include <stdio.h>
void fun(char *a, int n)
{
    int i = 0, j = 0;
    char *p = a;
    while (a[i] == '*')
        i++;

    if (i > n)
    {
        for (j = i - n; a[j] != '\0'; j++)
            *p++ = a[j];
        *p = '\0';
    }
}

int main(int argc, char *argv[])
{
    char s[255];
    int n;
    scanf("%254[^\n]s", s);
    scanf("%d", &n);

    fun(s, n);
    puts("");
    puts(s);
    return 0;
}

对比一下

#include <stdio.h>

void fun(char *a, int n)
{
    int i = 0, j = 0;
    while (*(a + i) == '*')
        i++;
    if (i > n)
    {
        int k = i - n;
        while (a[j] != '\0')
        {
            a[j++] = a[k++];
        }
    }
}
int main()
{
    char arr[50];
    int t;
    printf("请输入字符串:");
    gets(arr);
    printf("输入一个数:");
    scanf("%d", &t);
    fun(arr, t);
    puts(arr);
    return 0;
}

你想实现什么功能?