我不知道是什么导致了这个问题。感谢您的帮助!我已经为strlen尝试了很多代码,但这是我唯一可以实现的代码,只有一个错误。使用这段代码,我试图从文件中读取一个字符串,将其拆分成用空格分隔的单词,确定其长度,然后将单词和长度打印给用户。
#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;
}发布于 2015-06-10 10:50:03
您正在将一个名为strlen()的函数调用到另一个名为strlen()的函数中,这使得它是递归的,更糟糕的是,它是无限递归的!除此之外,您不需要将nstr的本地副本放入str中以确定其长度。最后,有没有什么理由不使用string.h中声明的标准strlen()函数?
发布于 2015-06-10 10:56:06
<string.h>中已经定义了size_t strlen(const char *),因此出现了冲突。
您应该为您的函数选择其他函数名称。
发布于 2015-06-10 12:49:06
1>标准strlen与本地strlen冲突。(可能冲突错误在这里)
2>该函数没有正确编码,在没有任何退出点的情况下递归地调用自身。
第一个可以忽略,因为局部定义会重载string.h .h中的定义,但问题出在函数中。
https://stackoverflow.com/questions/30746010
复制相似问题