与fgets和sscanf(fgets and sscanf)

2019-10-29 06:42发布

此代码应该从中finput和排序,并得到要被分拣整数,下面是要排序的整数整数数量的文件中的第一个整数文件中获得的整数。 我不明白如何与fgets和sscanf共同努力。 有人可以解释这个代码是如何与fgets和sscanf工作?

FILE *finput;
int *array_int, c1, no_elem;
char numlines[500];

fgets(numlines, 500, finput); 
array_int = (int *)malloc(sizeof(int)*no_elem);
if ((sscanf(numlines, "%d", &no_elem) == 1) &&  array_int!= NULL)
{
    for(c1=0; fgets(numlines, 500, finput) != NULL; )  
    {
        if (sscanf(numlines, "%d", &array_int[c1])==1) 
        {
            ++c1;
        }
    }
}

Answer 1:

fgets从文件的字符串(即文本行)。

sscanf分析基础上,格式字符串的字符串。 它是反向sprintf 。 所述<x>printf和匹配<x>scanf函数允许格式化的输出和输入。因此,用标准的格式串。 例如, "%d"表示“符号的整数值”,并在上下文<x>scanf它的意思是“读入在以下参数列表中的下一个参数”(你的情况您的阵列成员)。

您可以使用从文件直接解析fscanf ,但使用fgets + sscanf ,而不是允许更多的灵活性,可能是更安全的。



文章来源: fgets and sscanf
标签: c fgets scanf