C语言中的字符数组有一些问题。
我有两个阵列:

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

我还得到了一个char inputBuffer[80](它包含一个字符串)。
我想做的是找出*args中的值是否存在于history
我这样填写historyhistCount在0到10之间)。
for(j=0; j<MAX_LINE; j++)
{
    history[histCount][j] = inputBuffer[j];
}

我想不通的是如何循环查看它是否与history匹配。
示例如果args[]args[0] == 'romeo'则匹配。
如果history[3][0] == 'r'args[0] == 'selfie'则匹配。
我的第一个想法是做这样的事,但似乎没用
for(k=0; k<10; k++) {
    if(args[1] == history[k]) {
        printf("FOUND!!\n");
    }
}

任何帮助都将不胜感激。

最佳答案

我不是百分之百确定我明白。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

历史记录[0][0]将在参数[1]处找到相同的字符

09-10 11:50
查看更多