我正在为我的初学者编码类(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 ...
行。
此外,您的函数中有两个错误:
- 循环中的比较需要比较的不是指向
'\0'
的指针,而是它指向的字符:for (; *pstr != '\0'; pstr++)
- 计数器未初始化。它可能以 6754836 或任何其他随机数开头,并且您从那里递增。在声明中将其设置为 0:
int counter=0;
关于c - 警告 : conflicting types for built-in function ‘strlen’ int strlen (char *pstr);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51316203/