我在C语言中遇到了char数组的问题。
我有两个阵列:
char history[10][80];
char *args[80];
我还有一个char inputBuffer[80]
(这个包含一个字符串)。
我想要做的是找出*args
中history
中的值是否存在。
我这样填写history
(histCount
介于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'
和history[7][0] == 's'
匹配。我的第一个想法是做这样的事情,但它似乎不起作用
for(k=0; k<10; k++) {
if(args[1] == history[k]) {
printf("FOUND!!\n");
}
}
非常感谢任何帮助。
答案 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]
中找到相同的字符