C中的char数组并进行比较

时间:2014-01-17 22:26:51

标签: c arrays char

我在C语言中遇到了char数组的问题。

我有两个阵列:

char history[10][80];
char *args[80];

我还有一个char inputBuffer[80](这个包含一个字符串)。 我想要做的是找出*argshistory中的值是否存在。

我这样填写historyhistCount介于0和10之间)。

for(j=0; j<MAX_LINE; j++)
{
    history[histCount][j] = inputBuffer[j];
}

我无法弄清楚我是如何遍历history以查看它是否与args[]匹配。

  1. 示例如果args[0] == 'romeo'history[3][0] == 'r'匹配。
  2. 如果args[0] == 'selfie'history[7][0] == 's'匹配。
  3. 我的第一个想法是做这样的事情,但它似乎不起作用

    for(k=0; k<10; k++) {
        if(args[1] == history[k]) {
            printf("FOUND!!\n");
        }
    }
    

    非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

for(k=0; k<10; k++)
{
    if(strcmp(args[1],history[k]) == 0)
    {
        printf("FOUND!!");
    }
}

答案 1 :(得分:1)

我不是100%肯定我明白。 args [0]是一个指针,可以解释为一个字符串。这不是你想要的例子。您希望args [0]成为单个字符。

int main ( void ) {
    char history[10][80]
    char *args[80]

    int i, j, k;

    // filling
    for (i = 0; i < MAX_LINE; ++i) {
        history[histCount][i] = inputBuffer[i]; // this can be achieved with strcpy();
    }

    for (i = 0; i < 10; ++i) {
        for (j = 0; j < 80; ++j) {
            for (k = j; k < 80; ++k) {
            if (history[i][j] == args[0][k]) {
                printf ("FOUND!!");
                return true;
            }
        }
    }
}

它的作用是将历史作为2D char数组启动,将args作为char数组启动。然后对于每一行,它将历史的j索引与args的k索引进行比较。

为此。一个简短的演示。

        history[0]   args
0,0     a            b
0,1     a            a
0,2     a            d

history [0] [0]将在args [1]

中找到相同的字符