我有这个模板。
#include <stdio.h>
#include <string.h>
#define SIZE 10
int findTarget(char *target, char nameptr[SIZE][80], int size);
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]);
printf("Enter target name: ");
scanf("\n");
gets(t);
result = findTarget(t, nameptr, size);
printf("findTarget(): %d\n", result);
return 0;
}
int findTarget(char *target, char nameptr[SIZE][80], int size)
{
/* write your code here */
int i;
for (i = 0; i < size; i++) {
if (nameptr[i] == *target)
return i;
}
return -1;
}
/ *下的代码在这里编写代码* /是我的代码。 代码不起作用。我觉得(nameptr [i] == * target)有问题。
输出示例:
Enter no. of names: 4
Enter 4 names: Peter Paul John Mary
Enter target name: John
findTarget(): 2
Enter no. of names: 4
Enter 4 names: peter mary john steve
Enter target name: may
findTarget(): -1
我认为该模板是正确的,因为它是由学校提供的。
感谢您的帮助。
答案 0 :(得分:0)
此:
if (nameptr[i] == *target)
是错误的,因为您正在将指针与整数进行比较,这是没有意义的。另外,为了比较两个字符串,请使用strcmp
。使用==
将比较指针而不是它们的内容。
修正:
if (strcmp(nameptr[i], target) == 0)