strlen所作的仅仅是一个计数辩斗尺器的工作,它从内存的某个位置(可以是字符销迟串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到携高
第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含“\0”)。#include <stdio.h>
#define N 100
int strlen( char string[])
{
int i=0
while(string[i]!='\0') i++//直到碰到第一个字符串结束符'\0'
return i
}
int main()
{
char string[N]
scanf("%s",string)
int r=strlen(string)
printf("%d\n",r)
return 0}没看出什么错误,我自己测试也是对的。但碧枯禅是还是建议你不要自定义strlen
函数
。因为这是一个库函数,如果头文件有#include<string.h>的话,可败源以直接用。
另外,你都悔尘已经定义了str[]="test",为什么下面还来个scanf?有点重复的意味。最后贴下我写的,你可以参考下。
#include<stdio.h>
//#include<string.h>如果用这条,可以删除自定义函数
int strlen(const char *str){
int i=0
while(*str++)
i++
return i
}
int main(void){
char *str
scanf("%s",str)
int i=strlen(str)
printf("%d\n",i)
return 0
欢迎分享,转载请注明来源:内存溢出