gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:30:17 27 4
gpt4 key购买 nike

我正在为我的初学者编码类(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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com