C语言中的字符数组及其比较

C语言中的字符数组及其比较,c,arrays,char,C,Arrays,Char,我对C中的字符数组有一些问题 我有两个阵列: char history[10][80]; char *args[80]; 我还得到了一个字符输入缓冲区[80](其中包含一个字符串)。 我想做的是找出*args中的值是否存在于历史记录中 我这样填写history(histCount介于0和10之间) 任何帮助都将不胜感激。for(k=0;k我不能100%确定我是否理解。args[0]是一个指针,可以解释为字符串。这不是您在示例中想要的。您希望args[0]是一个字符 for(k=0; k<

我对C中的字符数组有一些问题

我有两个阵列:

char history[10][80];
char *args[80];
我还得到了一个
字符输入缓冲区[80]
(其中包含一个字符串)。 我想做的是找出
*args
中的值是否存在于
历史记录中

我这样填写
history
histCount
介于0和10之间)


任何帮助都将不胜感激。

for(k=0;k我不能100%确定我是否理解。args[0]是一个指针,可以解释为字符串。这不是您在示例中想要的。您希望args[0]是一个字符

for(k=0; k<10; k++)
{
    if(strcmp(args[1],history[k]) == 0)
    {
        printf("FOUND!!");
    }
}
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;
            }
        }
    }
}

历史记录[0][0]将在args[1]

处找到相同的字符。您的示例条件列表不正确。
args[0]
char*
history[3][0]
char
。第二个示例也是如此。您似乎正在尝试将
args[n]
处的字符串与
history[m]处的字符串进行匹配
。如果只需要一个字符匹配,则需要在
args
@WhozCraig上进行另一个间接寻址。
args[1]
字符*
,而
历史[3][0]
是一个字符。我需要做什么才能相互检查这些字符?您的问题没有显示您想要检查的类型的意图。同样,如果您只想检查每个字符串的第一个字符,
(args[n][0]==history[m][0])
。如果您想检查字符串的完全匹配,
(strcmp>)(args[n],history[m])==0
,在这两种情况下,
n
m
都有适当的索引,以匹配您正在解决的问题。@WhozCraig我只想检查每个字符串的第一个字符。问题是
args[1]
是一个
char*
,而
history[n][m]
是一个
char。例如;
args[1]
可以是“hello”,而“history[n][0]可以是“h”-然后我希望它是匹配的。是的,那么我之前评论中的两个示例中的前一个(第一个)很可能就是您要找的,它只检查每个示例的第一个字符。谢谢,这几乎就是我需要的。唯一的是我需要
char*args[]
在代码中的其他位置作为指针。那么,有没有一种方法可以将指针的第一个字符与另一个字符进行比较?(通过如上所述执行for循环,仅使用
*args[]
)您需要它作为指针做什么?我可能可以提供帮助。您可以使用args[]作为指针(注意!这不是完全相同的事情。)但您可以在比较行中更改为args[0][k]。我只检查每个“字符串”的第一个字符。问题是
args[1]
char*
history[n][m]
char
。例如,
args[1]
可以是“hello”,而“history[n][0]可以是“h”-然后我希望它是一个匹配项。按照我上面所说的做,args[0][k]将完成此操作。历史[n]也可以作为一个字符指针。我将更新我的示例。更新它。越来越近,我想:)我应该包括哪些内容来避免在最后匹配\0?我似乎现在得到了一个匹配项,不知道我键入了什么。。
for(k=0; k<10; k++)
{
    if(strcmp(args[1],history[k]) == 0)
    {
        printf("FOUND!!");
    }
}
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;
            }
        }
    }
}
        history[0]   args
0,0     a            b
0,1     a            a
0,2     a            d