【发布时间】:2014-07-03 16:55:45
【问题描述】:
这是一道作业题。我正在上 C 编程课。我现在正在处理的要求是
“如果输入了空消息,则应提示用户输入非空消息,直到他们输入至少 1 个字符长的消息。”
这是我现在的代码:
int main(void)
{
char string[101];
int menu;
do
{
printf("Enter a text message (maximum 100 characters long) : ");
scanf(" %100[^\n]s", string);
}
while (string[0] == '\0');
如果我在 scanf 行中的 % 前面取出空格,而用户只是按 Enter 键,则计算机将进入无限循环并仅将 gook 打印到屏幕上。 (屏幕上的文字移动得太快,我无法确定,但我“认为”它一直在打印 printf 语句。)
有了空格,用户只需按回车键,它就会将光标向下移动到下一行,直到用户输入有效的字符串然后继续移动。
我希望每次用户按 Enter 键时都重复该问题。我尝试了空的 for(;;),而在这里你可以看到 do-while 的变化。
欢迎任何 cmets。谢谢。
【问题讨论】:
-
IDR my C 但我认为您想要
!=并且您将第一个字母强制为空格,因此它永远不会退出。也许尝试 strlen -
为了帮助您查看输出,您可以将其重定向到文本文件。
-
@icbytes 是那句话吗?
-
应该是一个想法。
-
@icbytes 数组名称(不带下标)已经是您要传递给 scanf 的地址。如果你真的想使用地址操作符,就必须通过 &string[0] (这是相同的,但更神秘)。
标签: c while-loop do-while