如何用C语言实现以下功能

cailei0596 2011-05-31 02:35:57
大家帮我看看有没有解法,
如何用C语言实现以下功能

void main()
{
printf("start");
call function1();

call function2();



lable1:
printf("lable1");

printf("end");


}

function1()
{
printf("func1");
goto lable1;
}

function2()
{
printf("func2");
}

最终输出是
start
func1
lable1
end

我知道这个逻辑上是有些混乱,但是没办法,别人写的脚本就是能实现这种功能,还请高手赐教
...全文
178 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cailei0596 2011-05-31
  • 打赏
  • 举报
回复
可能我表述的不是很清楚。
把帖子结了,重新发
我真的是琦琦 2011-05-31
  • 打赏
  • 举报
回复
function1()用label1干嘛定义在main()中,而且没有必要用吧。。。
老邓 2011-05-31
  • 打赏
  • 举报
回复
你要模拟,就可以通过函数的返回值来goto到不同的地方。
但先要让函数返回。

#include<stdio.h>

int function1();
void function2();

void main()
{
printf("start\n");

if (function1() == 1)
goto lable2;

goto lable1;

function2();

lable1: printf("lable1\n");
lable2: printf("lable2\n");

printf("end\n");

}

int function1()
{
printf("func1\n");
return 1;
}

void function2()
{
printf("func2\n");
}

老邓 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cailei0596 的回复:]

回6楼:
我发这个帖子的目的是我要解析一个脚本,他这个脚本里有个GOTO语句能实现随意跳转.我想知道如何把这种脚本语言解析成C语言
[/Quote]
C语言不是脚本。
你高估它了。
是函数,就要在返回时清栈。
你goto到外面去了,就不叫C了。
编译器不会让过的。
cailei0596 2011-05-31
  • 打赏
  • 举报
回复
脚本的格式
主函数main
子函数subfunc1
子函数subfunc2
这些函数都是没有参数,
然后脚本里有个函数jump可以跳转到脚本任意位置。
cailei0596 2011-05-31
  • 打赏
  • 举报
回复
回6楼:
我发这个帖子的目的是我要解析一个脚本,他这个脚本里有个GOTO语句能实现随意跳转.我想知道如何把这种脚本语言解析成C语言
cailei0596 2011-05-31
  • 打赏
  • 举报
回复
回5楼:setjmp 和longjmp 可以实现随意跳转吗?
xiaoguangzaia 2011-05-31
  • 打赏
  • 举报
回复
其实我也不知道这个想干嘛

#include<stdio.h>

void function1();
void function2();

void main()
{
printf("start\n");
function1();

goto lable1;

function2();

lable1:
printf("lable1\n");

printf("end\n");


}

void function1()
{
printf("func1\n");

}

void function2()
{
printf("func2\n");
}
luciferisnotsatan 2011-05-31
  • 打赏
  • 举报
回复
goto跳不出函数吧。
setjmp,longjmp,你得自己注意下出入栈。

为什么要用这种跳转呢?
bdmh 2011-05-31
  • 打赏
  • 举报
回复

void function1()
{
printf("func1\n");
printf("lable1\n");

printf("end\n");
}

void function2()
{
printf("func2\n");
}
void main()
{
printf("start\n");
function1();
function2();
}
bluesky12312388 2011-05-31
  • 打赏
  • 举报
回复
可以实现,但要用到setjmp 和longjmp。 自己GOOGLE吧,相关资料一大把。
就想叫yoko 2011-05-31
  • 打赏
  • 举报
回复
function1函数里面的goto应该是goto不到函数外面的标签的
要根据你的具体需求进行修改~~
super_admi 2011-05-31
  • 打赏
  • 举报
回复
function2貌似一点用处都没有啊?

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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