【问题标题】:C. basics. exiting a loopC. 基础。退出循环
【发布时间】:2021-01-22 13:06:46
【问题描述】:

我正在寻找一种从用户端退出循环的方法。 我正在编写一个应该填充数组的代码,直到数组完全填充或直到用户决定他完成为止。我试图在循环中使用 if 语句来做一些事情,但它没有成功,做错了什么。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 6
void main() {
    printf("enter numbers sorted by their value, from low to high.\n");
    int HT7Q1[SIZE], kelet=0, kelettot=0, num2=0;
    for (int i = 0; i < SIZE; i++) {
        scanf("%d",&kelet);
        HT7Q1[i] = kelet;

我正在尝试创建一个关键字或一个字母,当用户使用该关键字或字母时,循环将在此时终止。到目前为止还没有成功,希望得到一些帮助。 谢谢。

【问题讨论】:

  • break 关键字允许您退出循环。
  • "a key word or a letter" 如果您在scanf 调用中只允许整数,您将无法检测到关键字或字母。您只能检查 scanf 是否返回 0 表示它不是整数。
  • 我可以有一个 char 类型的变量,在用户使用之前将被忽略?
  • 你可以用fgets替换你的scanf来读取一个字符串。然后检查您的关键字,如果找不到,请使用sscanf 从字符串中获取整数。
  • 例如,假设我有:scanf("%c",char);,但在使用 char 类型字符之前代码是未读的。有这样的可能吗?

标签: arrays c loops


【解决方案1】:

如果用户输入了一些无效字符(如“退出”或其他),您可以中断循环。

if (scanf("%d",&kelet) != 1) // Break if an invalid conversion happened
   break;

【讨论】:

  • 但是我不允许用户使用那个号码。我正在使用一个排列好的,我喜欢这个词,数组。它可以包含bot的负数和正数,只要数字是排列好的。
  • 我更新了答案,所以用户可以输入一些非数字文本退出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-13
  • 2018-03-18
  • 2020-02-07
  • 1970-01-01
  • 2021-07-12
  • 2013-08-09
相关资源
最近更新 更多