c - 如果用户输入 "*"则添加 1,或者如果用户输入 ""到 C 数组中则添加 0

标签 c arrays input char int

我需要获取用户输入(星号或空格),如果用户输入星号,我将在数组中插入 1,如果用户输入空格,我将在数组中插入 0。这是我到目前为止所拥有的:

#include <stdio.h>
#include <stdlib.h>

void userInput(){
    printf("Enter Generation 0 (Length must be 10, * for 1 and " " for 0):\n");
    char c;                 /* int */
    int count;
    char arr[10];
    for(int i = 0; i < 10; i++){
        scanf("%c", &c);
        if(c == '*')
            arr[i] = '1';
        else
            arr[i] = '0';
    }
    for(int j = 0; j < 10; j++){
        printf("%c", arr[j]);
    }
}

int main(int argc, const char * argv[]) {
    userInput();
}

问题是循环只允许用户输入一个字符6次然后打印。

如果我输入所有*,则输出:

Enter Generation 0 (Length must be 10, * for 1 and  for 0):
*
*
*
*
*
1010101010

如果我输入所有空格,则输出:

Enter Generation 0 (Length must be 80, * for 1 and  for 0):





0000000000

最佳答案

有多种方法可以捕获 '*'' '并将它们翻译为10 , 分别。您本质上是在编写一个小的输入处理程序,它将读取直到数组已满,或者用户使用 [ctrl + d] 终止输入。您只需检查以确保数组未满并且尚未到达 EOF 。一些简单的事情就可以了:

#include <stdio.h>

#define MAXC 10

int main (void) {

    unsigned char arr[MAXC] = {0};
    int c = 0, i, idx = 0;

    while (idx < MAXC && (c = getchar()) != EOF) {
        if (c == '*') arr[idx++] = 1u;
        if (c == ' ') arr[idx++] = 0u;
    }

    for (i = 0; i < idx; i++)
        printf (" arr[%d] : %u\n", i, arr[i]);

    return 0;
}

它将采用任何形式的输入,对 '*' 进行适当的操作和' ' ,并忽略附加字符,直到数组已满或 EOF生成:

示例使用/输出

$ ./bin/rdspcasterix
(**) (**)
  (**)
*
 arr[0] : 1
 arr[1] : 1
 arr[2] : 0
 arr[3] : 1
 arr[4] : 1
 arr[5] : 0
 arr[6] : 0
 arr[7] : 1
 arr[8] : 1
 arr[9] : 1

$ ./bin/rdspcasterix
The quick*brown fox*jumps over*a lazy*dog
**  **
 arr[0] : 0
 arr[1] : 1
 arr[2] : 0
 arr[3] : 1
 arr[4] : 0
 arr[5] : 1
 arr[6] : 0
 arr[7] : 1
 arr[8] : 1
 arr[9] : 1

没有一种正确的方法可以做到这一点,因此请查看所有答案并选择最适合您情况的答案。

关于c - 如果用户输入 "*"则添加 1,或者如果用户输入 ""到 C 数组中则添加 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36406425/

相关文章:

c - printf/sprintf 疯狂(自发串联)

input - 如何在 ipython 中创建多行输入?

javascript - jquery 从输入中获取值

javascript - 如何计算数组中对象值的动态平均值?

c# - 如何在 C# 中对用户输入进行分类

c++ - 更高级地使用 ceil() 函数

c - 如何在实现 strcat 时消除段错误(核心转储)错误?

c - c中的重定义错误

c++ - 为什么我的数组总是给出正确的答案?

android - 如何将 boolean 数组定义为 XML 中的资源?