C编程格式'%s'期望类型' char *',但参数2有' char * [50]

时间:2014-04-30 17:54:45

标签: c warnings

这是接收错误的一个功能,但对于我的生活,我无法弄清楚为什么

void serchName(dealers_t *ptr, int numDealers)   
{
    char dealerName[NAME_LEN];
    int index;

    printf("please enter the dealer's name:");
    scanf("%s", &dealerName);

    for (index = 0; index < numDealers; index++, *ptr++)
    {
        if (strcmp(dealerName, ptr->name) == 0)
        {
            printf("name: %s\n city: %s\n state:%s\n zip:%i\n phone: %s\n", ptr->name,ptr->city,ptr->state,ptr->zip,ptr->phone);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

如果将char [50]传递给scanf(),它将看到作为char *指向数组的第一个元素。这就是为什么你不必明确使用&#34;地址&#34; (&amp;)运算符(char)数组。

如果您使用它,则不会获得指向数组第一个元素的指针,而是指向数组本身的指针,以及编译器发出警告的原因。