退出循环,输入结束后

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)  

它适用于每个输入。 添加空格将忽略换行符。

【讨论】:

以上是关于退出循环,输入结束后的主要内容,如果未能解决你的问题,请参考以下文章

jQuery each方法中结束本次循环和退出循环

each和for 退出循环和结束本次循环

arm程序退出死循环

for与while循环break跳出循环continue结束本次循环exit退出脚本

Python问题求助--如何将循环程序中每次输入的数据循环使用,即退出当前循环程序后,再次运行该循环程序时可以使用原先输入的数据信息?

流程控制语句-退出循环break