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

标签 c string pointers

我正在为我的初学者编码类(class)编写代码,我们将在其中创建我们自己的 strlen , strcat , strcmp ,和strcpy功能。我创建了strlen函数并尝试在我的代码中使用它。我让用户输入一个字符串并将其存储在字符串中,然后将该字符串发送到一个以指针作为参数的函数,然后该函数返回字符串的长度。编译代码时遇到的问题是以下消息:

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

我没有太多的经验,除了我搞砸了一些事情之外,我不太明白编译器消息试图告诉我什么。有人可以向我解释这个问题以及我应该做什么来解决它吗?

这是我的函数原型(prototype):

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);

最佳答案

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

您需要使用不同的名称,或者干脆不包含标准(从代码中删除潜在的 #include ... 行。

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

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

关于c - 警告 : conflicting types for built-in function ‘strlen’ int strlen (char *pstr);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51316203/

相关文章:

c - 通过 C 中的函数传递指针变量

C 代码解析器,用于跟踪项目中的函数调用和变量访问(emacs 兼容性会很好)

c - 无法在 Allegro 5 中加载位图

c++ - strcpy 不复制分配的字符数组

c - 从单链表打印结构数据

python - 在需要 float 的 python3 中使用 ctypes 时得到 'nan'

string - 在 Golang 中达到定义的最大长度之前,如何将跟随者字符连接到字符串?

字符串比较中的C++字符

c - 指针矩阵在代码中间被取消引用

C++ - 如何从指向类的指针访问成员变量/函数