C语言代码的解释,其中代码的具体含义

img


有谁可以解释一下图片里面的代码吗,特别是其中的field-descr

小白式的解答,肢解分析法(😀):
char 定义字符型变量
Field 用于获取特定栏目或档案的字段值及常用的环境变量值
descr description 描写,记述,形容
【255】可以放255个字符的数组
'\0' 终止符,空字符串
char field_descr[255]; 获取文件中定义的不同字段标记的参数值,最多可获取255个字符串数组
field-descr[0]='\0'; 当获取的字段参数值为空字符串时自动停止
【个人理解,如有不当,敬请谅解】

这就是读取一个文件中多行的参数,field-descr是因为每行开头部分是参数描述信息,然后空格之后是参数数据。

这段代码的含义是读取如下格式配置文件里的数据:

参数名1 参数值1
参数名2 参数值2
参数名3 参数值3
...

其中field_descr用来提取每行中的参数名并忽略,因此配置文件中参数的顺序有严格的要求,必须和代码中读取的顺序一致。

其实这些代码的含义是这样的:

/** other.c -- 解释代码的含义 */

/** 此方法用于读取配置文件 */
void readconf(conf, rcode)

char *conf; /* 控制文件名称 */
int *rcode; /* 返回码 */
{
    char field_descr[255];    /* 控制文件的字段描述 */
    FILE * fcon;            /* 控制文件指针 */
    
    /* 如果不能打开控制参数文件的话,将返回码设置为ERROR,表示函数调用出错 */
    if((fcon = fopen(conf, "r")) == NULL) {
        // 现有的程序不能打开 conf 参数文件
        printf("Can not open parameter file <%s>, exitting program...\n", conf);
        // 设置返回码为ERROR
        *rcode = ERROR;
    }

    /* 读取控制文件参数 */
    field_descr[0]= '\0';
    fscanf(fcon, "%s %d", field_descr, &jday_start);
    field_descr[0]= '\0';
    fscanf(fcon, "%s %d", field_descr, &jday_end);
    field_descr[0]= '\0';
    fscanf(fcon, "%s %d", field_descr, &jday_display);
    field_descr[0]= '\0';
    fscanf(fcon, "%s %d", field_descr, &factor);
    field_descr[0]= '\0';
    fscanf(fcon, "%s %d", field_descr, &lin_offset);
    field_descr[0]= '\0';
    fscanf(fcon, "%s %d", field_descr, &nlines);
    field_descr[0]= '\0';
    fscanf(fcon, "%s %d", field_descr, &pix_offset);
    field_descr[0] = '\0';
    fscanf(fcon, "%s %d", field_descr, &npixels);
    field_descr[0]= awcf[0] = '\0';
    fscanf(fcon, "%s %d", field_descr, &awcf);
    field_descr[0]= leafareaf[0] = '\0';
    fscanf(fcon, "%s %d", field_descr, &leafareaf);
    field_descr[0]= snowpackf[0] = '\0';
    fscanf(fcon, "%s %d", field_descr, &snowpackf);
    field_descr[0]= ncarbinf[0] = '\0';
    fscanf(fcon, "%s %d", field_descr, &ncarbinf);
    field_descr[0]= rowf[0] = '\0';
    fscanf(fcon, "%s %d", field_descr, &rowf);
    // .....
}

读取一个文件中的多行参数

字符串field_descr就是文件描述,每次读取一句文件描述和一个整数,读取的整数就是控制字符