| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 601 人关注过本帖
标题:新手读到一段程序困扰
只看楼主 加入收藏
天控
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-3-20
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:8 
新手读到一段程序困扰
#include <stdio.h>
int main ()
{int len;
char*str[20];
printf("please input a string:\n");
scanf("%s",str);
len=length(str);
printf("the string has %d characters.",len);
}
length(p)
char *p;
{int n;
 n=0;
while(*p!='\0')
{n++;p++;
}
return n;}
为啥运行length未声明?源代码里是char*str[20];怎么不是char str[20]
搜索更多相关主题的帖子: include please return 
2013-03-29 09:36
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:1 
1.因为 length函数位于 main后面,可以这么理解:编译器还没读到 length函数,所以不知道

2.为什么不是str[20]?

因为这段代码是错的


[fly]存在即是合理[/fly]
2013-03-29 09:41
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
无法编译吧   

阅读代码 也得先阅读正确的代码

DO IT YOURSELF !
2013-03-29 09:43
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
收藏
得分:6 
#include <stdio.h>
#include <stdlib.h>

int main ()
{
    int len;
    char*str=(char*)malloc(20*sizeof(char));//不知道你用的什么编译器,我用的VC6.0是不能char*str[20]这样定义的
    //他的意思是定义一个char指针变量,给它20个空间的大小,但是下面用的时候会转换不了,所以我动态申请20个char的大小的空间
    int length(char *);//你想在下面使用length(),这里就要先声明,告诉它有这个函数,要不然找不到
    //或者你把length()函数放在主函数之前就不需要加这一句了。
    printf("please input a string:\n");
    scanf("%s",str);
    len=length(str);
    printf("the string has %d characters.\n",len);
    return 0;
}
//你函数返回的是int型的n,所以函数的返回值要是int型的,不写的话在VC6.0中是不行的,TC中不知道
int length(char *p)//我估计你是用的TC,VC6.0貌似不允许你那种写法,不过意思都是一样的
{
    int n;
    n=0;
    while(*p!='\0')
    {
        n++;
        p++;
    }
    return n;
}
2013-03-29 09:55
yctchxf
Rank: 6Rank: 6
来 自:盐城
等 级:侠之大者
威 望:2
帖 子:176
专家分:454
注 册:2012-4-10
收藏
得分:2 
功能函数在main()函数后定义的话,在main()中是要声明的啊!还有编程是要懂得缩进的啊,希望养成良好的编程习惯哦



#include <stdio.h>
void main ()
{
     int len;
     char str[20];
     int length( char *p);  //对功能函数进行声明。
     printf("please input a string:\n");
     scanf("%s",str);
     len=length(str);
     printf("the string has %d characters.",len);
}
 int length(char *p)
   {
     int n;
     n=0;
     while(*p!='\0')
     {  n++;p++;
     }
    return n;
 }
2013-03-29 10:09
天控
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-3-20
收藏
得分:0 
回复 3楼 wp231957
谢谢了哈,讲解的如此详细!!!
2013-03-29 16:56
天控
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-3-20
收藏
得分:0 
回复 4楼 shmilyflf
嗯,谢谢!
2013-03-29 16:56
天控
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-3-20
收藏
得分:0 
回复 2楼 azzbcc
就是看到这段代码,无法编译啊,
2013-03-29 16:57
天控
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-3-20
收藏
得分:0 
回复 楼主 天控
看来以后不能尽信书啊
2013-03-29 16:58
快速回复:新手读到一段程序困扰
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032968 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved