这个小程序中的函数为什么不能执行?

HDLWL 2006-08-28 07:59:14
#include "stdio.h"
main()
{
void assign();
int i;
char A[]={"CHINA"};
char B[]={"china is great"};
char C[]={"my name is liufeng"};

for(i=0;i<4;i++)
{
scanf("%s",&A);
printf("%s\n%s\n%s\n",A,B,C);
assign();
}
}

void assign()
{
char A[]={"CHINA"};
char B[]={"china is great0000"};
char C[]={"my name is liufeng"};
}


函数为什么不能使用?
...全文
474 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞哥 2006-09-04
  • 打赏
  • 举报
回复
没有问题
scanf 那里将A前取地址符号去了就行了
fslt1981 2006-09-04
  • 打赏
  • 举报
回复
从楼主的问题来看,因为对assign()函数没有声明,所以编译是不能通过的(本人用VC++6.0),有两种方法解决,一:函数写在main()函数之前,二:在main()函数之前写上void assign();(函数声明).
在想说说,楼主的assign()函数做法不知道有什么意义,是想用函数的形式定义变量吗?
看看qingyuan18(zealot_tang)的回复就明白了,还有本人读懂你的程序是干什么的.希望以后发东西的时候把你的想法也说一下,好叫我们理解.
hackem 2006-09-03
  • 打赏
  • 举报
回复
void assign();
放在mani()后没有错
------------------------

for(i=0;i<4;i++)
{
scanf("%s",&A);
printf("%s\n%s\n%s\n",A,B,C);
assign();
}
这个循环是想实现读取 assign函数里的a,b,c值?还有scanf("%",&a) 如果是输入字符串用a以前是首地址了,不用&a,以及i<4;这样循环四次输入a的值,我真不知道有什么作用?第一次printf的时候是不能输出b,c的值的,因为在前面没定义,以及assign函数也没有返回值,所以还是重写过这个程序
--------------------------
我建议楼主日后提问应该以这种形式
如:
写这个程序的目的
void assign(); //声明函数,你的意图
char A[]={"china"};//定义并初始化字符数组A,
因为通过注释才能让大家更清楚你的想法,如果没有注释时,大家是很难清楚你的想法,你想干些什么,修改时也不知道要达到如何的目的
-------------


JFDream_15 2006-09-03
  • 打赏
  • 举报
回复
assign();里面的A[],B[],C[]都是局部变量,出了这个函数之后就会释放掉,这里的A[],B[],C[]和主函数里面的A[],B[],C[]一点关系都没有,所以对这个函数的调用对于主函数的输出结果不会有任何的影响.看来楼主还没有弄明白局部变量的作用域的问题.

zjyu88 2006-09-03
  • 打赏
  • 举报
回复
assign();的作用并不能达到你想要的效果~~~
yiqing8854 2006-09-03
  • 打赏
  • 举报
回复
没有任何意义的讨论,看来标准太不统一了,都没错,是谁的错。
lofe811 2006-09-02
  • 打赏
  • 举报
回复
是的,要把函数申请拿到外面,最前面
macdonald25 2006-09-02
  • 打赏
  • 举报
回复
函数写在main函数后面的时候 一定要在头文件之后,main函数之前声明自定义函数
ll_dzl 2006-09-02
  • 打赏
  • 举报
回复
同blue_zyb()
wumy_ld 2006-09-02
  • 打赏
  • 举报
回复
这个函数明明可以调用,楼主何以认为不能?
chunshenghaha 2006-09-01
  • 打赏
  • 举报
回复
#include "stdio.h"
void assign()//把函数放主函数前,可不定义
{
char A[]={"CHINA"};
char B[]={"china is great0000"};
char C[]={"my name is liufeng"};
}
main()
{

int i;
char A[]={"CHINA"};
char B[]={"china is great"};
char C[]={"my name is liufeng"};

for(i=0;i<4;i++)
{
scanf("%s",&A);
printf("%s\n%s\n%s\n",A,B,C);
assign();
}
}
qingyuan18 2006-08-28
  • 打赏
  • 举报
回复
assign这个函数干嘛的?定义了三个局部变量,函数退出后就退栈了,有什么用吗?
blue_zyb 2006-08-28
  • 打赏
  • 举报
回复
不知道你想干什么。最明显的问题是: scanf("%s",&A); 改成:scanf("%s",A);
另外在输入的时候,最好不要超过5个字符,否则就可能出问题
Heaven_Redsky 2006-08-28
  • 打赏
  • 举报
回复
#include "stdio.h"

void assign(); //声明挪到这里

main()
{

int i;
char A[]={"CHINA"};
char B[]={"china is great"};
char C[]={"my name is liufeng"};

for(i=0;i<4;i++)
{
scanf("%s",&A);
printf("%s\n%s\n%s\n",A,B,C);
assign();
}
}

void assign()
{
char A[]={"CHINA"};
char B[]={"china is great0000"};
char C[]={"my name is liufeng"};
}
stecdeng 2006-08-28
  • 打赏
  • 举报
回复
函数里不要定义函数
还要分清楚范围域
值的传递等等
#include <stdio.h>
#include <stdlib.h>
void assign()
{
char A[]={"CHINA"};
char B[]={"china is great0000"};
char C[]={"my name is liufeng"};
printf("%s\n%s\n%s\n",A,B,C);
}

int main(int argc, char *argv[])
{

char A[]={"CHINA"};
char B[]={"china is great"};
char C[]={"my name is liufeng"};
printf("%s\n%s\n%s\n",A,B,C);
printf("**************************\n");
assign();
system("PAUSE");
return 0;
}


顺便一句 我也新人
lbing7 2006-08-28
  • 打赏
  • 举报
回复
好像是在函数里不能定义函数,你把void assign();在main里声明
当然找不到定义

blue_zyb 2006-08-28
  • 打赏
  • 举报
回复
楼上的,它只是声明了一个函数,可没有嵌套定义函数。声明也不一定就要放在main()前面。
jarod_xu 2006-08-28
  • 打赏
  • 举报
回复
声明函数要在main()前面,不然编译器怎么搞啊?
还有,C++中不能嵌套函数的。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧