如何将不同数量的数字从一行分配给可以包含它们的数组?

时间:2013-05-26 17:33:45

标签: c arrays scanf

我有两个文件,2dim.dat和3dim.dat,它们的第3行分别包含以下内容:

2 12

1 0 0

他们的第3行是唯一与我们有关的行。编写一个函数,计算该行中将有多少个数,然后程序构造一个具有多个维的无符号整数数组。 我知道我可以通过执行

将2dim.dat中的值2和12分配到C程序中该数组的维度中
if(fscanf("%hu %hu", &number[0], &number[1]) == 2){}

类似于3dim.dat。

如果我收到一行中包含更多值的文件,如4,20或甚至270,该怎么办? 我不知道如何告诉fscanf在第一个参数中用空格分隔270个重复的%hu,然后添加我们数组的所有维度。

1 个答案:

答案 0 :(得分:0)

示例代码

#include <stdio.h>

int main(void){
    //input line_buff like fgets(line_buff, sizeof(line_buff), fp);
    char line_buff1[64] = "4 20 270";
    char line_buff2[64] = "4 20";
    unsigned short number[3];
    int i, count;
    //Succeed in reading three, be count = 3
    count = sscanf(line_buff1, "%hu %hu %hu", &number[0], &number[1], &number[2]);
    for(i=0;i<count;++i)
        printf("%hu\n", number[i]);

    //Succeed in reading two, be count = 2, fail number[2]
    count = sscanf(line_buff2, "%hu %hu %hu", &number[0], &number[1], &number[2]);
    for(i=0;i<count;++i)
        printf("%hu\n", number[i]);
    return 0;
}