- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们开始编写 C 代码,但我无法解决我的硬件问题,因为我不知道如何从用户那里获取输入(整数),直到他按下 Enter 键(例如 20 30 10 40),然后使用 eof 完成。这是不起作用的部分代码,
printf("Students, please enter heights!\n");
while((scanf("%d",&height))!=EOF)
{
if(height>0)
{
avg_girls=avg_girls+height;
counter_girls++;
}
else
{
avg_boys=avg_boys+height;
counter_boys++;
}
}
我陷入了无限循环非常感谢你。
最佳答案
虽然从一行中读取未知数量的整数的更好方法是将整行读入足够大小的缓冲区中,然后使用 strtol
(利用其 endptr
参数将缓冲区中的位置更新为最后一个转换值之后的 1 个字符
),您可以使用 scanf
并完成相同的操作。
使用 scanf
从一行输入读取多个整数的一种方法是简单地读取每个字符并确认它不是 '\n'
字符或 EOF
。如果该字符不是数字(或数字前面的 '-'
符号 - thanks Ajay Brahmakshatriya ),则直接获取下一个字符。如果字符是数字,则使用 ungetc
将其放回到 stdin
中,然后调用 scanf
并验证转换然后根据输入的符号更新女孩或男孩的平均值。
您可以执行以下操作:
int height;
fputs ("enter heights: ", stdout);
while ((height = getchar()) != '\n' && height != EOF) {
/* if not '-' and not digit, go read next char */
if (height != '-' && !isdigit (height))
continue;
ungetc (height, stdin); /* was digit, put it back in stdin */
if (scanf ("%d", &height) == 1) { /* now read with scanf */
if (height > 0) { /* postive val, add to girls */
avg_girls += height;
counter_girls++;
}
else { /* negative val, add to boys */
avg_boys += height;
counter_boys++;
}
}
}
isspace()
宏由 ctype.h
header 提供。如果您无法包含其他 header ,则只需手动检查 height
是否为数字,例如
if (height != '-' && (height < '0' || '9' < height))
continue;
(请记住,您正在使用 getchar()
读取字符,因此请与 '0'
和 的 ASCII 字符进行比较>'9'
)
另一种替代方法是将整行输入读入缓冲区,然后在处理缓冲区时重复调用 sscanf
转换整数,另外还利用 "%n"
说明符报告调用 sscanf
所消耗的字符数。 (例如,使用 "%d%n"
并提供一个指向 int
的指针来保存 "%n"
提供的值)然后您可以保留从缓冲区开头开始的总偏移量,以将其添加到指向 sscanf
位置的指针以进行下一次读取。
无论哪种方式都可以,但是对于新 C 程序员来说,一次读取一行比尝试使用 scanf
和 stdin
更容易遇到陷阱。 > 本身。
关于c - 如何使用 eof 获取用户输入的整数,直到他按下 Enter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53101771/
我需要在 JavaScript 中的笛卡尔坐标和球坐标之间进行转换。我在论坛上浏览了一下,没有找到我要找的东西。 现在我有这个: this.rho = sqrt((x*x) + (y*y) + (z*
有没有matrix3d可以像这样把矩形变成梯形的?我知道常规的 2d 矩阵变换只能以平行四边形结束,因为您只能有效地倾斜和旋转。 div { width: 300px; height:
关于这个例子(d3.j radial tree node links different sizes),我想知道是否可以在 d3.js 中混合径向树和直线树。 对于我的 jsFiddle 示例:htt
我尽量把标题写得最好,但我不确定如何准确描述这里发生的事情,所以请随时更正。 我想使用 › 直 Angular 引号 (›) 而不是 > 直 Angular 引号 (>),虽然 › 字符比 > 短,但
我正在尝试使用 CSS 创建一个具有圆边的矩形棱柱,如下图所示。 到目前为止,我已经指定了顶部和底部的边界半径。问题是我不知道如何让另一边的左右边缘向内 curl 。因此,拐 Angular 处不应有
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 去年关闭。 社区去年审查了是否重
首先,我刚刚开始学习 HTML 和 CSS。 我想如何使用这段代码: https://codepen.io/martinjkelly/pen/vEOBvL .container { width:
我是一名优秀的程序员,十分优秀!