【问题标题】:C Programming. Comparing an array's contents.C 编程。比较数组的内容。
【发布时间】:2013-05-19 00:37:40
【问题描述】:

我有一个数组作为程序输入的结果:

//1.

int i, numberOfOccurances;

   for(i = 0; i < numOfOccurrances; i++) {
      printf("%d",PrintOccurrances[i]);
   }

作为示例输出:

121

现在我想比较这个数组,以便我可以打印一条附加语句,例如:

//2.

if (PrintOccurrances == 121) {
    printf("This means blah");
} else if (PrintOccurrances == 232) {
    printf("This means something else");
}

//我应该设置什么类型的变量,我应该如何在第 1 点设置它? //第2点我应该有什么类型的字符串语句。

感谢您的帮助。

【问题讨论】:

  • 将值连接到字符串并使用 strcmp。
  • 欢迎来到 Stack Overflow。请尽快阅读FAQ。目前,您还没有真正提供足够的信息来给您一个好的答案。数组的基本类型是什么类型(charintdouble)?您是在将数组与自身进行比较,还是与另一个数组进行比较?数组的语义是什么?是订的吗?是否允许重复?根据这些问题的答案,还会出现更多问题。最终,你的目标是什么——你想要做什么的人类可以理解的陈述是什么?
  • 我注意到在片段//1.中,你的变量PrintOccurances是一个数组,但是在片段//2.中,你的同名变量是一个标量,而不是一个数组。这增加了解释您的要求的难度。 (“发生”中也没有 a,但这是一个非常小的问题。)

标签: c arrays string strcmp


【解决方案1】:

做一个比较函数,在调用点使用复合字面量:

#include <stdbool.h>

bool int_arr_cmp_n(int const * a, int const * b, size_t len)
{
    while (len--)
        if (*a++ != *b++)
            return false;
    return true;
}

用法:

if (int_arr_cmp_n(PrintOccurrances, (int[]){1,2,1}, 3)) { /* ... */ }

【讨论】:

    猜你喜欢
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多