c语言问题 请问一下大家

输入一个字符串以回车符为结束,删除其中的所有的i字母(包括大小写),生成一个新的字符串,输出新生成的字符串。

#include <stdio.h>
#include <ctype.h>

#define NUM 128

int main()
{
    char str[NUM];
    char new_str[NUM];
    char ch;
    int i = 0;
    while(1)
    {
        ch = getchar();
        if (ch == '\n')
            break;
        str[i++] = ch;
        if (i == NUM - 2)
            break;
    }
    str[i] = '\0';

    const char *p = str;
    char *q = new_str;
    while (*p)
    {
        if (*p == 'i' || *p == 'I') {
            ++p;
            continue;
        }
        *q++ = *p++;
    }
    *q = '\0';
    printf("%s\n", new_str);
    return 0;
}