c - int 数组不获取 char 值

标签 c

我在编程方面绝对是全新的,我不确定如何解释我在这里所做的事情。

这部分的全部目的是输入值,然后以相同的顺序打印出来。现在我想在按“q”时退出输入值,所以我必须扫描字符,但是当我将它们分配回 int 数组时,值不一样。

希望这对你有意义,但无论如何这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#define SIZE  5000
define flush fflush(stdin)

main() {
    int input[SIZE] = {0},i = 0;
    int counter = 0;
    char inputs, quit;

     do {
        system("cls");
        printf("Input number ('q' to quit and display numbers entered): ");

        flush;
        scanf("%c",&inputs);
        flush;

        if (inputs == 'q')
            quit = 'q';
        else {
            input[i] = inputs;
            counter++;
            i++;
        }
    } while (i < SIZE && quit != 'q');

    for(i = 0; i < counter; i++){
        printf("%i.%i\n", i + 1, input[i]);
    }

    system("pause");
}

顺便说一句,我一直在尝试自己做这件事,并且还在网上研究了一些关于字符的信息,但找不到任何对我有帮助的东西。非常感谢。

最佳答案

你不应该通过 %c 获取整数,也不应该将 char 值分配给整数变量,而这不是本意,而是你应该这样处理

i = 0;
do {
  printf("Enter a number: ");
  scanf("%d", &input[i]);
  i++; counter++;
  printf("Do you want to continue? (y/n) : ");
  scanf("%c", &inputs);
} while(inputs == 'y');

或者您可以预先获取整数输入的数量并循环获取那么多整数。

关于c - int 数组不获取 char 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13104672/

相关文章:

c++ - 如何为 C 和 C++ 创建一个 makefile,源代码在子目录中

c - 'ftell()' 读取的字符越多,返回值就一定越大吗?

c++ - 为什么 boost.geometry.index.rtree 比 superliminal.RTree 慢

c - 链表-基本插入函数

c - 如何使用 n - 1 个线程对 n 个元素的数组进行排序

c - 中断 for 循环内的 if 语句

c - 内部增量 i++ 输出不变的结果

c - 如何更改 char* 全局?

C 控制台输出在等待输入时隐藏

编译错误 - 已弃用的扩展