我必须以这种格式读取数据:
3000 100 14.283,65.966,49.807,43.363,71.496,61.712,7.0562,24.365,50.623,38.299,32.566,89.61,20.412,
我可以轻松读取前3个数字,但是当我尝试在循环中使用scanf时,它只是一遍又一遍地读取14.283。
我输入数据的方式(这是不可协商的)是通过使用bash I / O将包含数据的文件中的“cat”的结果传送到我的程序中
如果我猜测...我会说它不喜欢[^,]而忽略了那一点以后的所有数据?
#include <stdio.h>
int main( void ){
int total, rows, columns;
float number;
scanf("%d", &rows);
scanf("%d", &columns);
printf("%d\n%d\n", rows, columns);
for(int i = 0; i < 5; i++){
scanf("%f[^,]", &number);
printf("%f\n", number);
}
}
答案 0 :(得分:0)
显然这不是正则表达式,但它有效
for(int i = 0; i < 5; i++){
scanf("%f %c", &number2, &comma);
printf("%f\n", number2);
}
number2取浮点值,逗号吃逗号
答案 1 :(得分:0)
你可以这样做
char character[2];
for(int i = 0; i < 5; i++){
scanf("%f%[^,]", &number2,character);
printf("%f\n", number2);
}
或简单地使用抑制算子
for(int i = 0; i < 5; i++){
scanf("%f%*[^,]", &number2);
printf("%f\n", number2);
}