首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用strlen,但得到错误:“strlen”的类型冲突

尝试使用strlen,但得到错误:“strlen”的类型冲突
EN

Stack Overflow用户
提问于 2015-06-10 10:19:23
回答 4查看 1.1K关注 0票数 0

我不知道是什么导致了这个问题。感谢您的帮助!我已经为strlen尝试了很多代码,但这是我唯一可以实现的代码,只有一个错误。使用这段代码,我试图从文件中读取一个字符串,将其拆分成用空格分隔的单词,确定其长度,然后将单词和长度打印给用户。

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

FILE*arquivo;
char nuks[80];
char frase[80];

typedef struct node {
char palavra;
struct node* esquerda;
struct node* direita;
int altura;
} No;

size_t strlen(char *nstr)
{
int total=0;
char str[80];
strcpy(str, nstr);
total = strlen(str);
printf("|%s| is |%d|", str, total);
}

int main()
{
No* raiz = NULL;
arquivo=fopen("README.txt","r");
fgets(nuks, 79, arquivo);
printf("%s\n",nuks);

char *parte;

// Get the first word
parte = (char*)strtok(nuks, " ");

// Get the other words
while(parte != NULL){
strlen(parte);
printf("%s\n", parte);
parte = (char*)strtok(NULL, " ");
}

printf("\n\n");
system("pause");
return 0;
}
EN

回答 4

Stack Overflow用户

发布于 2015-06-10 10:50:03

您正在将一个名为strlen()的函数调用到另一个名为strlen()的函数中,这使得它是递归的,更糟糕的是,它是无限递归的!除此之外,您不需要将nstr的本地副本放入str中以确定其长度。最后,有没有什么理由不使用string.h中声明的标准strlen()函数?

票数 1
EN

Stack Overflow用户

发布于 2015-06-10 10:56:06

<string.h>中已经定义了size_t strlen(const char *),因此出现了冲突。

您应该为您的函数选择其他函数名称。

票数 0
EN

Stack Overflow用户

发布于 2015-06-10 12:49:06

1>标准strlen与本地strlen冲突。(可能冲突错误在这里)

2>该函数没有正确编码,在没有任何退出点的情况下递归地调用自身。

第一个可以忽略,因为局部定义会重载string.h .h中的定义,但问题出在函数中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30746010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档