C语言中的字符数组有一些问题。
我有两个阵列:
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'
则匹配。我的第一个想法是做这样的事,但似乎没用
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]处找到相同的字符