首页 > 解决方案 > 如何将以下 C 代码提取到函数中?

问题描述

我正在尝试将一些 c 代码移动到单独的函数中。程序计算文件中行的长度。

#include <stdio.h>

int main()
{
    const int max = 255;
    int counter = 0;
    FILE *f1 = fopen("maps/map1.txt", "r");
    char buff[max];

    while (fgets(buff, sizeof (buff), f1))
    {
        counter++;
    }
    printf("%d\n", sizeof (buff));  // 255
    printf("%d\n", counter);        // 23
    fclose(f1);
    return 0;
}

计数器指示 23,这是正确的结果,buff 变量的大小为 255,如声明的那样。

这些简单的实现被移到一个单独的函数 getLineWidth() 中。不幸的是,我无法得到正确的结果。

#include <stdio.h>

int getLineWidth(char * buffer, FILE * file);

int main()
{
    const int max = 255;
    int counter = 0;
    FILE *f1 = fopen("maps/map1.txt", "r");
    char buff[max];
    printf("%d\n", getLineWidth(buff, f1));          // 299
    fclose(f1);
    return 0;
}

int getLineWidth(char * buffer, FILE * file){
    int counter = 0;
    printf("%d\n", sizeof (buffer));                // 4
    while (fgets(buffer, sizeof (buffer), file))
    {
        counter++;
    }
    return counter;
}

缓冲区变量的大小为4,这可能表示char的大小,而不是传递给函数的数组buff的大小。函数也返回了错误的结果——299。

请帮助我处理这部分代码,并告诉我我在哪里犯了错误。

标签: c

解决方案


推荐阅读