c语言函数不可重入 在c语言程序的函数中不能定义另一个函数

C语言中 gets 函数输入字符串,不能放在循环中 重复输入是怎么回事,程序如下

#includestdio.h

创新互联公司是一家专业提供鱼峰企业网站建设,专注与成都做网站、网站建设、html5、小程序制作等业务。10年已为鱼峰众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。

#includestring.h

int main()

{

char str[5];

while(1)

{

printf("[gets]str=");

gets(str);

printf("gets:str:%s,length:%d\n",str,strlen(str));

printf("scanf,str=");

scanf("%s",str);

getchar();

printf("scanf:str=%s\n",str,strlen(str));

if(str[0]=='f') break;

}

return 0;

}

scanf输入后那个回车被gets(str)接收了,所以下次遇到gets就不再等待你输入,可以用getchar()把scanf输入后的回车接收就好了。 我运行过的,给最佳答案哦!

什么是可重入程序?举出一个不重入程序的例子

若一个程序或子程序可以安全的被并行执行,则称其为可重入(reentrant或re-entrant)的;即,当该子程序正在运行时,可以再次进入并执行它。若一个函数是可重入的,则该函数:不能含有静态(全局)非常量数据。 不能返回静态(全局)非常量数据的地址。 只能处理由调用者提供的数据。 不能依赖于单实例模式资源的锁。 不能调用不可重入的函数。 多'用户/对象/进程优先级'以及多进程一般会使得对可重入代码的控制变得复杂。同时,IO代码通常不是可重入的,因为他们依赖于像磁盘这样共享的、单独的资源。可重入性是函数编程语言的关键特性之一。 例子在以下的C语言代码中,函数f和函数g都不是可重入的。int g_var = 1;int f(){ g_var = g_var + 2; return g_var;}int g(){ return f() + 2;}以上代码中,f使用了全局变量 g_var,所以,如果两个线程同时执行它并访问g_var,则返回的结果取决于执行的时间。因此,f不可重入。而g调用了f,所以它也不可重入。稍作修改后,两个函数都是可重入的:int f(int i){ return i + 2;}int g(int i){ return f(i) + 2;}

什么是C语言的可重入函数?怎么使用?

假如,main()中正在调用A()函数.在此期间,有一中断,在中断服务程序中还要调用A().

如果这个A()可以被调用就算是可重入

反之算不可重入.

可重入与不可重入的区别在这个函数的内容是否会相互冲突...例如A()中有个静态变量...就不可以..


本文名称:c语言函数不可重入 在c语言程序的函数中不能定义另一个函数
URL分享:http://scjbc.cn/article/ddeodso.html

其他资讯