退出循环,输入结束后
Posted
技术标签:
【中文标题】退出循环,输入结束后【英文标题】:getting out of loop, after the input ends 【发布时间】:2022-01-18 15:16:58 【问题描述】:所以,我得到了一个输入列表:
hello
123456
124
5223
food
7
我必须做的是,查看列表的每个元素,并检查交叉和是否等于7(例如:124 = 1 + 2 + 4 = 7,意思是,数字是有效的) 所以我们得到的输出必须是:(在控制台中它应该是这样的:)
hello
hello is invalid
123456
123456 is invalid
124
124 is valid
5223
5223 is invalid
food
food is invalid
7
7 is valid
这是我写的程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 99
int cross_sum(int length ,char *name)
int sum = 0;
for(int i = 0; i < length ; i++)
if(name[i] != 0)
sum = sum +( name[i] -48);
return sum;
int check_crosssum( int number)
if( number % 10 == 7)
return 0;
return -1;
int main (void)
char name[MAXN] ;
int sum = 0;
while (scanf("%98[^\n]", name) == 1)
int len = strlen(name);
sum = cross_sum(len,name);
int pruf_summe = check_crosssum(sum);
if( pruf_summe == 0 && len <= 20 )
printf("%s is valid \n" , name);
else
printf("%s is invalid \n" , name);
return 0;
当我运行程序时,它会查看第一个元素然后结束它。 所以我得到的输出是:
hello
hello is invalid
----------
(program exited with code: 0)
如何在 while 循环的帮助下单独处理每个输入? 或者有没有其他方式,程序运行直到没有输入! 我也试过了
while(1)
它似乎没有工作。 任何想法或建议都会很棒!
【问题讨论】:
【参考方案1】:如果你在读取之前清除输入字符串,并让你的退出条件为“空字符串”,你应该没问题:
int sum = 0;
do
name[0] = '\0';
scanf("%s", name);
...
while (strlen(name) > 1);
【讨论】:
但它会在第一个数字结束,其交叉和为 7,并忽略其余的......它必须运行到输入结束 @mmixLinus @Sjo9 好的,误解了你的结束标准。编辑了我的答案。 我试过了,但是当我按下回车键时它并没有终止程序 @Sjo9 是的,name
中可能有换行符。也修复了该结束条件。
它真的对我不起作用,scanf 试图避免读取空格并等到用户提供任何输入,如果我使用 EOF,它只会继续无限循环,最后一个数字 i输入【参考方案2】:
您可以从此更改条件
while (scanf("%98[^\n]", name) == 1)
到这里
while (scanf(" %98[^\n]", name) == 1)
它适用于每个输入。 添加空格将忽略换行符。
【讨论】:
以上是关于退出循环,输入结束后的主要内容,如果未能解决你的问题,请参考以下文章
for与while循环break跳出循环continue结束本次循环exit退出脚本
Python问题求助--如何将循环程序中每次输入的数据循环使用,即退出当前循环程序后,再次运行该循环程序时可以使用原先输入的数据信息?