在字符串数组中查找字符串。 (C代码)

时间:2016-02-24 05:53:28

标签: c

我有这个模板。

#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

我认为该模板是正确的,因为它是由学校提供的。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

此:

if (nameptr[i] == *target)

是错误的,因为您正在将指针与整数进行比较,这是没有意义的。另外,为了比较两个字符串,请使用strcmp。使用==将比较指针而不是它们的内容。

修正:

if (strcmp(nameptr[i], target) == 0)