我无法找到如何设置循环,然后输入输入 按'e'或'E'停止输入。输入的输入是整数,但需要使用字符停止。那是我迷路的地方。我已经看到了一些关于使用ascii转换的信息,但我不知道它会有多高效。这段代码被打破了,但它是我能得到的。任何信息都会有所帮助。
int main(void)
{
char num;
int sub;
while (sub != 'e' || sub != 'E') {
scanf("%d", &num);
sub = #
printf("%d", num);
}
return 0;
}
答案 0 :(得分:0)
简单。
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c = getchar();
int num;
while (c != 'e' || c != 'E') {
if (isdigit(c))
num = c - '0';
c = getchar();
}
return 0;
}
但是你不必使用ascii字符作为停止输入的方法。您可以使用-1的EOF。它是UNIX系统上的Ctrl-D和Windows上的Ctrl-Z。 int c; while((c = getchar())!= EOF)
答案 1 :(得分:0)
区分int
,'e'
和'E'
输入的直接方法是使用{{1}读取用户输入的行然后解析它。
fgets()
答案 2 :(得分:0)
如评论中所述,(sub != 'e' || sub != 'E')
始终如此。如果sub
永远不能同时为e
和E
。
请注意,sub
是int
而不是整数指针(int *
)。
sub = #
行为sub
分配了num
的地址。
sub
的值在while
循环初始化之前用于控制表达式。 sub
在该点具有垃圾值,这是不确定的。在使用它之前,你必须使用一些值来使它失去活力。
待办事项
int num, rv;
while( 1 )
{
rv=scanf("%d", &num);
if(rv==0)
{
if( (num=getchar())=='e' || num=='E' )
{
break;
}
else
{
while(getchar()!='\n');
continue;
}
}
printf("\n%d", num);
}
num
将scanf()
的值读入rv
,其返回值存储在scanf()
中。
1
返回成功分配的数量,在这种情况下,如果将整数值读入num
,则%d
应为rv
,因为1
是格式说明符。
如果scanf()
为getchar()
,则为数字并打印。否则它可能是e
无法读取的字符,并且在输入缓冲区中仍然未被消耗。 E
读取此数据的第一个字节,如果是\n
或length
,则退出循环,否则清除输入缓冲区直到var array = [1, 3, 8],
i;
for (i = 0; i < array.length; i++) {
console.log(array[i]);
if (i === 0) {
array.push(10, 20);
}
}
为e
遇到了循环的下一次迭代,而没有进入打印的部分。