#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);
}
求指教!!这段代码错在哪里啊?该怎么修改?(不用自定义字符串函数和指针)
//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改成其他的就可以了,同样谢谢了哈!让你费心了!!
追答不客气
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);
}
助你好运啊本回答被提问者采纳
#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);
}
改动后编译可以通过,但是会
出现如下状况:
怎么破啊?