首页 > 解决方案 > 读取一组数字直到出现空行

问题描述

我想读取这种格式的行(int float int/int),直到一个空白行,即两个\n被馈送到命令行。

我有一个函数,它读取一行并将数字添加到列表中(如果有),或者如果检测到空行则返回 null:

listNode *readLine(listNode *prvi){
    int min, mesec, dan;
    float raz;
    elem tmp;
    fflush(stdin);
    if(scanf("%d %f %d/%d",&min, &raz, &dan, &mesec)){ 
        tmp.minuti = min;
        tmp.razdaljina = raz;
        tmp.dan = dan;
        tmp.mesec = mesec;
        enqueue(prvi,tmp);
        return prvi;
    }else{
        return NULL;
    }
}

我努力了

if(scanf("%d %f %d/%d%*c%[^0-9]",&min, &raz, &dan, &mesec,s)!=4)

但它忽略了新行,虽然我指定不读取数字,但 s 以某种方式获取了第一个数字。

我想可以通过将整行作为字符串读取然后解析它来轻松完成,但我想这样做,只修改 scanf 参数。

我希望有人会想出一个方便的解决方案。

标签: cscanf

解决方案


推荐阅读