c-不能增加取消引用的指针的值



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

// fun.h
void count_char(FILE *f, unsigned *newl, unsigned *let, unsigned *num, unsigned *spec_char);
// main.c
#include <stdio.h>
#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:ntnewline - %untletters - %untnumbers - %untspecial characters - %un", newline, number, letter, special_character);
    return 0;
}
// fun.c
#include <stdio.h>
#include <ctype.h>
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)++;

相关内容

  • 没有找到相关文章

最新更新