c - 如何删除数组中的结束用户输入值?

标签 c arrays scanf break

我正在尝试创建一个程序,将用户输入存储在数组中,最多 50 个数字,然后再将数字显示给用户。用户可以通过输入-999取消计数。但是我不想显示 -999,但我似乎无法删除该值而不导致所有数字不发布给用户。我做错了什么?

#define INPUT 50
int main() {
int i;
int userInput[INPUT];

for (i = 0; i < INPUT; i++) {
    printf("Enter up to 50 numbers: (-999 to quit): ");
    scanf("%i", &userInput[i]);
    if (userInput[i] == -999) {
        break; 
    }
} 

for (i = 0; i < INPUT && i && userInput[i] !=999; i++) {
    printf("%i. %i\n", i + 1, userInput[i]);
    if (userInput[i] == -999) {
        break;
    }
}
system("pause");

最佳答案

您的代码至少存在两个问题。

  1. 简化第二个 for 子句:

    for (i = 0; i < INPUT; i++) {
    

    如果保留简单的 i 条件,第二个循环将永远不会执行。

  2. 正如 Mike 所说,在显示终止号码 -999 之前中断

关于c - 如何删除数组中的结束用户输入值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53494119/

相关文章:

c - 有哪些第三方选项可用于在 C 中处理字符串?

c++ - 直接将通过函数传递的 const char* 文本转换为字符 vector

c - scanf 的意外行为

C:打印字符串中最长的单词及其长度

c - 64 位 AMD64 模式下的段错误

C++注入(inject)代码

arrays - 有没有办法强制对std::array进行完全初始化

c - 尽管行与搜索模式不匹配,sscanf 仍返回 1

C:如何在矩阵中使用 scanf 读取多个值

c++ - 如何在 C++ 中从 void* 数组中有效地解压 float、int16、int32 等数据?