我希望在while循环中使用scanf来同时获取用户的输入。输入很可能是包含字符和浮点数的形式:例如。 2 + 3.4 * 5,我想将数字和字符存储到一个单独的数组中(通过函数进一步处理)
这是我到目前为止所提出的:
while (scanf(" %f", &num1) == 1 || scanf(" %c ", &op) == 1) {
printf("%f ----> %c", num1, op);
}
但是我输入的任何字符都会自动转换为'u',如果输入多个数字,我的数字会被打印两次。此外,我不知道如何摆脱while循环。 (我尝试在printf下面抛出一个断点,但只允许读取两个输入)
知道如何让这项工作成功吗?
答案 0 :(得分:0)
建议通过fgets()
读取一行,但如果想从stdin读取dirclty,则立即扫描数字和操作码,但根据读取的内容进行打印。
int cnt;
while ((cnt = scanf("%f %c", &num1, &op)) > 0) {
printf("%f", num1);
if (cnt > 1) printf(" ----> %c ", op);
}
printf("\n");