c - 简单的 C 程序 ABACADABRA

标签 c

请帮忙!!我在完成我正在修读的类(class)的作业时遇到一些困难。 Link to Assignment这是这个pdf中的问题3。我想做的就是将一个数组与另一个数组进行比较,以确保“单词”数组中的每个字母都与“自然”数组(其中包含 ABRACADABRA 字母表)中的字母之一匹配。我什至还没有开始加密部分,但我想我已经为此制定了算法。到目前为止我已经:

int main()
{
    int i = 0, w = 0, j = 0;
    char nat[5] = { 'a','b','c','d','r' };
    char in[5], inw[7];

    printf("Enter key:  ");

    for (i = 0; i < 5; i++)
    {
        in[i] = getchar();
    }

    printf("Enter word: ");

    for (w = 0; w < 7; w++)
    {
        inw[w] = getchar();
    }

    while (j < 5)
    {
        while (inw[w] != nat[j])
        {
            j++;
        }
        if (inw[w] == nat[j])
        {
            w++;
            j = 0;
        }
    }

    if (j == 5)
    {
        printf("You did not speak ABRACADABRA to me!\n");
    }
    return 0;
}

最佳答案

您的代码可以大大简化,同时改进其工作方式。

如果输入较少,getchar() 的循环将会失败;您应该只使用 sscanf() 进行大小限制的字符串转换,或 getline()如果你有的话。

您应该将字母表设置为正确的字符串:

const char *nat = "abcdr";

然后使用 strchr()在字符串中搜索字符,并将 nat 作为字符串传递。

关于c - 简单的 C 程序 ABACADABRA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48763548/

相关文章:

c - 有没有办法使用 libcurl >=7.3.x 从 HTTP header 获取内容长度?

C:读取文件以跟踪每个扩展的 ASCII 出现次数

c - 对链表进行排序的最佳方法是什么?

c - 调试相当于 C 代码的程序集以了解函数调用

c - 如何在C中将链表中的字符复制到数组中?

c - 如何在 C 中处理位数据

c - 不一致的 recv() 行为

c 宏,检查参数并用 nop 替换

c++ - 如何将 wchar 值存储在双引号字符串中

c++ - 什么时候用简单的话用extern "C"?