gpt4 book ai didi

c - C 语言编程中查找多维数组中的元素

转载 作者:行者123 更新时间:2023-12-02 13:45:57 27 4
gpt4 key购买 nike

我在尝试在 C 编程中循环多维数组时遇到了一些问题。预期的输出应该是这样的:

Enter no. of names: 4
Enter 4 names: Peter Paul John Mary
Enter target name: John
Yes - matched at index location: 2

Enter no. of names: 5
Enter 5 names: Peter Paul John Mary Vincent
Enter target name: Jane
No – no such name: -1

这是我的代码:

int main()
{
char nameptr[SIZE][80];
char t[40];
int i, result, size;

printf("Enter no. of names: ");
scanf("%d", &size);
printf("Enter %d names: ", size);
for (i = 0; i<size; i++)
scanf("%s", nameptr[i]);
getc(stdin);
printf("\nEnter target name: ");
gets(t);
result = findTarget(t, nameptr, size);
if (result != -1)
printf("Yes - matched at index location: %d\n", result);
else
printf("No - no such name: -1\n");
return 0;
}

int findTarget(char *target, char nameptr[SIZE][80], int size)
{
int row, col;
for (row = 0; row < SIZE; row++) {
for (col = 0; col < 80; col++) {
if (nameptr[row][col] == target) {
return col;
}
}
}
return -1;
}

但是,当我输入“Peter Paul John Mary”并尝试搜索时,它不会返回“是 - 在索引位置匹配:2”。相反,它给我返回了“否”——没有这样的名字:-1。所以我在想我的代码哪一部分出了问题。有什么想法吗?

提前致谢。

修改部分

int findTarget(char *target, char nameptr[SIZE][80], int size)
{
int row, col;
for (row = 0; row < size; row++) {
for (col = 0; col < size; col++) {
if (strcmp(nameptr[row]+col, target)) {
return row;
break;
}
else {
return -1;
}
}
}
}

最佳答案

您不想使用 nameptr[row][col] == target,您想将其替换为 strcmp(nameptr[row][col],target) = = 0 == 比较指针(内存地址),strcmp 比较字符串的实际值,匹配时返回0

关于c - C 语言编程中查找多维数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32408762/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com