无法递增解除引用指针的值

我似乎有一个简单程序的问题,该程序应该计算文件中的各种字符类型。 即使文件根本不为空,它也始终打印零。 我认为它与指针有关,可能是错的。 我还想知道在这种情况下是否需要初始化变量?

// fun.h void count_char(FILE *f, unsigned *newl, unsigned *let, unsigned *num, unsigned *spec_char); // main.c #include  #include "fun.h" int main() { unsigned newline = 0, number = 0, letter = 0, special_character = 0; char path[256]; FILE *f_read; printf("Insert a file path: "); gets(path); f_read = fopen(path, "r"); if(f_read == NULL) { perror("The following error occurred"); return 1; } count_char(f_read, &newline, &number, &letter, &special_character); printf("File content:\n\tnewline - %u\n\tletters - %u\n\tnumbers - %u\n\tspecial characters - %u\n", newline, number, letter, special_character); return 0; } // fun.c #include  #include  void count_char(FILE *f, unsigned *newl, unsigned *let, unsigned *num, unsigned *spec_char) { char c; while((c = fgetc(f)) != EOF) { if(c == '\n') *newl++; else if(isalpha(c)) *let++; else if(isdigit(c)) *num++; else *spec_char++; } return; } 

当你做这样的事情: *newl++; ; 会发生的是,首先,指针递增(即使其指向下一个存储位置),然后根据运算符优先级取消引用。

如果要取消引用它然后递增,则必须使用括号,如下所示: (*newl)++;