我尝试使用NULL
,但它不起作用。有什么想法吗?
while (index != NULL) { //what expression must be passed here?
printf("Enter a number\n");
scanf ("%d", &index);
//do some work
}
答案 0 :(得分:0)
ASCII中NULL的十进制值为0,因此如果您在程序中输入此值,它将结束。这与换行符(十进制10)不同。
在任何情况下,scanf()都将继续,直到您输入一个值,因此您需要为循环条件使用某种类型的sentinel值,例如。如果你只使用正数 - 使用负数;如果你有一个上限,超出这个值的任意值。否则你将不得不以其他方式做到这一点,例如。输入一个字符串并转换为int,如果它不是你的退出字符/字符串。
答案 1 :(得分:0)
如果你考虑一下,我打赌你从来没有见过一个真实世界的节目,它会提示你输入这样的内容。为什么?因为几乎不可能正确地编写它们,甚至更不可能正确使用它们。现实世界程序的工作方式是使用GUI或从文件/流中读取输入而不提示。鉴于这一事实,我永远不会理解为什么这么多新手程序员想要提示用户输入。
话虽如此,您可以在代码中输入任何值来终止循环。所有整数值都是程序的有效输入吗?如果是这样,您需要一些其他终止方式,例如键入文件结束符。