c - 读取一组数字直到出现空行
问题描述
我想读取这种格式的行(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 参数。
我希望有人会想出一个方便的解决方案。
解决方案
推荐阅读
- c# - GetHashCode() 方法返回值而不是地址
- javascript - 在 JS RegExp 中转义特殊字符(在 jQuery .each() 中使用)
- javascript - 如何使用 webpack 在 web worker 中导入 wasm?
- javascript - document.execCommand ('copy') 在 React 中不起作用
- twilio - 如何在twilio中录制语音并在指定时间后播放?
- algorithm - 位于半圆中的点的 MST 上界
- openstack - 无法从网络中的其他节点 ping 路由器 ip
- qt - 动态更改多边形颜色
- java - Android Java 从 webview 生成带有单独页眉和页脚的 PDF 文件
- django - django 错误 NameError: name 'DEBUG' is not defined