c语言编程 字符串长度

#include<stdio.h>
int strlen(char stry);
int strlen(char stry)
{
int i;
for(i=0;i<40;i++)
if(stry[i]=='\0')
return i;
}
main()
{
int n;
char str[40];
printf("input a string:");
scanf("%s",str);
n=strlen(str);
printf("%d\n",n);
}
求指教!!这段代码错在哪里啊?该怎么修改?(不用自定义字符串函数和指针)

第1个回答  2013-07-27
#include<stdio.h>

//int strlen(char stry); 函数strlen()的调用在声明后,这一行可以省略

int strlen(char *stry) //应该传入一个字符指针,也就是你的一维数组首地址
//因为调用时是n=strlen(str);str是一维数组名,也是数组首地址
{
int i;
for(i=0;i<40;i++)
if(stry[i]=='\0')
return i;
}
main()
{
int n;
char str[40];
printf("input a string:");
scanf("%s",str);
n=strlen(str);
printf("%d\n",n);
}追问

改动后编译可以通过,但是会出现如上的状况,怎么破啊?

追答

#include<stdio.h>

#include "windows.h"

//int strlen(char stry);           函数strlen()的调用在声明后,这一行可以省略

int strlen(char *stry)              //应该传入一个字符指针,也就是你的一维数组首地址

//因为调用时是n=strlen(str);str是一维数组名,也是数组首地址

{

 int i;

 for(i=0;i<40;i++)

  if(stry[i]=='\0')

   return i;

}

void main()

{

 int n;

 char str[40];

 printf("input a string:");

 scanf("%s",str);

 n=strlen(str);

 printf("%d\n",n);

 system("pause");

}


我编译运行了,没任何问题,注意因为我是用的Visual Studio编译器,所以加了#include“windows.h"

和system("pause");这两句,如果你是在visual c++编译器上编译就没必要加这两句。

 

还有你的主函数main()前缺少函数类型。我加了一个void类型。

追问

把函数名strlen改成其他的就可以了,同样谢谢了哈!让你费心了!!

追答

不客气

第2个回答  2013-07-27
#include<stdio.h>
int strlen(char stry);//由于子函数在主函数之前,此句可去
int strlen(char stry)//自定义函数名不要与库函数中中的函数名,关键字相同,把函数名改改看
{
int i;
for(i=0;i<40;i++)
if(stry[i]=='\0')
return i;
}
main()
{
int n;
char str[40];
printf("input a string:");
scanf("%s",str);
n=strlen(str);
printf("%d\n",n);
}
助你好运啊本回答被提问者采纳
第3个回答  2013-07-27
如下修改就好啦!
#include<stdio.h>
int strlen(char *stry);//(char stry)修改为(char *stry)
int strlen(char *stry)//(char stry)修改为(char *stry)
{
int i;
for(i=0;i<40;i++)
if(stry[i]=='\0')
return i;
}
main()
{
int n;
char str[40];
printf("input a string:");
scanf("%s",str);
n=strlen(str);
printf("%d\n",n);
}
第4个回答  2013-07-27
把第二行去掉,再把第三行int strlen(char stry)改为int strlen(char stry[ ])追问

改动后编译可以通过,但是会

出现如下状况:

怎么破啊?

第5个回答  2013-07-27
子函数的形参改成int strlen(char stry[]);

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网