C语言中的字符数组及其比较
我对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<
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