| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1259 人关注过本帖
标题:一个函数初始化错误的问题
只看楼主 加入收藏
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
结帖率:100%
收藏
 问题点数:0 回复次数:12 
一个函数初始化错误的问题
我写了一个计算输入字符串的字符个数的函数,如下:(请注意红色的代码)
main()
{int i,len;
i=0;
len=0;
char *str; 这一行 错误:expression syntax in function main
printf("enter string:");
scanf("%s",str); 这一行错误:undefine symbol 'str' function main
while(*(str+i)!='\0') 这一行 错误: invalid indiection in function main
{ i++;
len++;
}
printf("This string has:%d",len);
}

可是:
如果把红色的代码改为如下:
char *str;
i=0;
len=0;
那么在编译时却能够正常编译,不知是为什么?
不知哪位高手能够回答:难道在变量初始化时有位置吗?
以下是编译时出现的错误:

[此贴子已经被作者于2006-6-1 19:17:59编辑过]

搜索更多相关主题的帖子: 函数 
2006-06-01 19:03
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
scanf("%s",str);

哪个师傅告诉你可以这样用

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-06-01 20:43
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
以下是引用论坛在2006-6-1 20:43:00的发言:
scanf("%s",str);

哪个师傅告诉你可以这样用

谁说不可以..!~这么用有错吗?


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-06-01 20:48
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
以下是引用han2y在2006-6-1 19:03:00的发言:
我写了一个计算输入字符串的字符个数的函数,如下:(请注意红色的代码)
main()
{int i=0,len=0; /* 问题在这里.明白了吗? */
char *str; 这一行 错误:expression syntax in function main
printf("enter string:");
scanf("%s",str); 这一行错误:undefine symbol 'str' function main
while(*(str+i)!='\0') 这一行 错误: invalid indiection in function main
{ i++;
len++;
}
printf("This string has:%d",len);
}

可是:
如果把红色的代码改为如下:
char *str;
i=0;
len=0;
那么在编译时却能够正常编译,不知是为什么?
不知哪位高手能够回答:难道在变量初始化时有位置吗?
以下是编译时出现的错误:

TC严格规定.先定义后使用.所有赋值都需在定义后..



还有.用得着定义len吗?直接输出i不就行了~!

[此贴子已经被作者于2006-6-1 20:54:14编辑过]


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-06-01 20:51
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

没错


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-06-01 20:51
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
以下是引用论坛在2006-6-1 20:51:00的发言:

没错

你不要在C区瞎混了..发这水贴有意思吗..没事去数据结构那看看.帮帮我们

要不就多看看书..!


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-06-01 20:53
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
他的指针指针指向那里

char *str;

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-06-01 20:54
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
char *str;
scanf("%s",str);
这样用 是正确的 ,符合scanf("%参数",地址);就行。
这个问题主要在于,函数中定义的变量一定要在最前面声明,
int i,len;
i=0;
len=0;

char *str//这个位置不对,一定要放在在i=0;len=0前面,放到
int i,len;前面也没问题。这是个格式问题。



我的征途是星辰大海
2006-06-01 20:56
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
虽然他的指针有可能指向不应该指的地址.可是绝对与 scanf无关!..scanf("%s",str);是绝对没有任何问题的!

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-06-01 20:57
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-01 21:00
快速回复:一个函数初始化错误的问题
数据加载中...
 
   



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

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