警告:内置函数“ strlen”的类型冲突int strlen(char * pstr);

时间:2018-07-13 00:35:06

标签: c string pointers

我正在为我的初学者编码类编写代码,我们在其中创建自己的strlenstrcatstrcmpstrcpy函数。我已经创建了strlen函数,并试图在我的代码中使用它。我有一个用户输入一个字符串并将其存储在字符串中,然后将该字符串发送到以指针为参数的函数,然后该函数返回字符串的长度。我在编译代码时遇到的问题是以下消息:

    warning: conflicting types for built-in function ‘strlen’
 int strlen (char *pstr);

我没有很多经验,除了弄乱了东西以外,我不太理解编译器消息试图告诉我什么。有人可以向我解释问题以及如何解决该问题吗?

这是我的函数原型:

int strlen (char *pstr);

以下是函数本身:

int strlen (char *pstr)
{
    int counter;

    for ( ; pstr != '\0'; pstr++)
    {
        counter++;
    }

    return counter;

}

这是我的代码中对函数的调用:

char string1[SIZE], string2[SIZE];
int len1, len2;

len1 = strlen (string1);
len2 = strlen (string2);
printf("The length of string 1 is: %d", len1);
printf("The length of string 2 is: %d", len2);

1 个答案:

答案 0 :(得分:0)

该消息表明已经有一个具有该名称的函数,并且以不同的方式声明了它(当然是标准strlen)。

您需要使用其他名称,或者根本不包括标准(从代码中删除潜在的#include ...行。

此外,您的函数中还有两个错误:

  1. 循环中的比较不需要比较指向'\0'的指针,而是指向它的指针:for ( ; *pstr != '\0'; pstr++)
  2. 计数器未初始化。它可能以6754836或任何其他随机数开头,并且您要从那里开始递增。在声明中将其设置为0:int counter=0;