c语言终止
Ⅰ c语言代码执行到一半终止
大概问题,我已经知道了,所谓的执行到一半就终止,是因为数组越界了,而且编译器不会报警。
比如,在你这个程序里,我输出50-200,他永远只会提示你有21个,因为你输出之前,还需要把这个偶数存放到一维数组a中,然而一维数组只能存放20个数,50-200中间有76个偶数,到了第20个偶数的时候,数组就已经越界了,程序就运行不正常了,应该是直接跳出了循环。而你是在数组存放了第20个数的后面进行了i++,所以提示是第21个数,数组是从0开始计数的,你是从一开始提示的,所以第21个数其实就是数组a[20]的数,然后就跳出循环了,只要偶数大于21个,程序永远都只显示21个数,建议要么把数组去掉,这样就可以显示全部的偶数了,就正常了,要么把数组设置的大一点,但是这样,如果数太多了,还是会溢出的,看你的感觉是想保存前20个偶数,那么建议程序改成这样,就能即保存前20个数,显示的也是正常的。
代码如下:
#include <stdio.h>
#include <windows.h>
int main()
{
int a[20];
int c,d,e,f,g,h,i;
long b;
printf("起始值:");
scanf("%d",&c);
printf("终止值:");
scanf("%d",&d);
d++;
for(b=c;b<d;b++)
{
if(b%2==0)
{
if(i<20)
{
a[i]=b;
}
i++;
printf("第%d个偶数:%d\n",i,b);
}
}
printf("%d到%d中有%d个偶数",c,d,i);
return 0;
}
Ⅱ C语言中exit();怎么用
exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束。
return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。
在多个进程时.如果有时要检测上进程是否正常退出的.就要用到上个进程的返回值。
exit(1)表示进程正常退出. 返回 1;
exit(0)表示进程非正常退出. 返回 0.
操作:
1、进程的开始:
C程序是从main函数开始执行, 原型如下:int main(int argc, char *argv[]),通常main的返回值是int型, 正确返回0.如果main的返回值为void或者无, 某些编译器会给出警告, 此时main的返回值通常是0.
2、进程终止:
C程序的终止分为两种: 正常终止和异常终止.正常终止分为: return, exit, _exit, _Exit, pthreade_exit异常中指分为: abort, SIGNAL, 线程响应取消。正常终止的前4种, 即exit系列函数.
3、 atexit终止处理程序:
ISO C规定, 一个进程最对可登记32个终止处理函数, 这些函数由exit按登记相反的顺序自动调用. 如果同一函数登记多次, 也会被调用多次.
原型如下:
#include
int atexit(void (*func)(void));
其中参数是一个函数指针, 指向终止处理函数, 该函数无参无返回值.
(2)c语言终止扩展阅读
exit函数和return函数的主要区别:
1)exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的。main函数结束时也会隐式地调用exit函数。
exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件。
exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程;而return是返回函数值并退出函数。
通常情况:exit(0)表示程序正常, exit(1)和exit(-1)表示程序异常退出,exit(2)表示表示系统找不到指定的文件。在整个程序中,只要调用exit就结束(当前进程或者在main时候为整个程序)。
2)return是语言级别的,它表示了调用堆栈的返回;return( )是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。
在多个进程时。如果有时要检测上个进程是否正常退出。就要用到上个进程的返回值,依次类推。而exit是系统调用级别的,它表示了一个进程的结束。
3)exit函数是退出应用程序,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息。
Ⅲ C语言用什么语句终止整个程序
C语言用exit()语句可以终止整个程序。
C语言中,exit()通常是用在子程序中用来终结程序用的,使用后程序自动结束,跳回操作系统。exit(0) 表示程序正常退出;exit(1)、exit(-1)表示程序异常退出。在整个程序中,只要调用exit,就会结束程序。
exit()函数所在的头文件是stdlib.h,需要将该头文件引入后使用。
(3)c语言终止扩展阅读:
exit()函数内部实际操作过程:
1、调用atexit()注册的函数(出口函数),按ATEXIT注册时相反的顺序调用所有由它注册的函数,这使得我们可以指定在程序终止时执行自己的清理动作.例如,保存程序状态信息于某个文件,解开对共享数据库上的锁等.
2、调用cleanup()来关闭所有打开的流,这将导致写所有被缓冲的输出,删除用TMPFILE函数建立的所有临时文件.
3、最后调用_exit()函数终止进程。
Ⅳ C语言如何终止线程
面只有两个线程,是生产者/消费者模式,已编译通过,注释很详细。
Ⅳ c语言 退出整个程序或函数的命令是什么
c语言退出整个程序或函数的命令是return、goto 、break 、break。
1、return 返回;
return 表示从被调用函数返回主调函数继续执行,返回时可附带一个返回值,由return后面的参数设定。
2、goto 无条件跳转;
goto语句也称作无条件转移语句,其一般格式为goto语句标号:其中语句标号是按照标识符规定书写的符号,放在某一行语句行的前面,标号后加冒号(:)。
3、break 调处最近一层块;
大多数情况下是终止上一层的循环,C语言中break在switch中执行一条case后跳出语句的作用 使程序跳出switch执行switch以后的语句 如果没有break switch会从满足条件的地方执行到switch结构结束。
(5)c语言终止扩展阅读
break语句使用
示例:
#include <stdio.h>
void main()
{
int x=1;
while(x<=4)
{
printf("x=%d ",x);
if (x==3)
{
break;
}
x++;
}
}
Ⅵ C语言运行时出现程序终止时怎么回事
char*
modify(char
*p)
{
char
newp[9];
printf("请输入新密码:\n");
p=newp;
scanf("%s",newp);
//newp[8]
=
'\0';
return
p;
}
返回值错误,当这个函数运行结束时,newp所指的内容被系统回收了,而这之前将它赋给了p,也就是函数结束后,p所指的内容不确定。
Ⅶ C语言如何终止线程
有三种方式可以终止线程,具体调用函数依赖于使用的线程系统。
1 在线程入口函数中,调用return。 即退出线程入口函数,可以实现终止当前线程效果;
2 在线程执行的任意函数,调用当前线程退出函数,可以退出当前线程;
3 在任意位置,调用线程终止函数,并传入要终止线程的标识符,即pid,可以实现终止对应线程效果。
Ⅷ C语言如何停止运行
一般都是用Ctr+c来停止。如果是程序内部的话,可以在main函数里面使用return,或者用exit()都可以让程序停止运行。
Ⅸ C语言用什么语句终止整个程序
1、首先打开vc6.0,新建一个项目。
Ⅹ C语言线程如何终止
有三种方式可以终止线程,具体调用函数依赖于使用的线程系统。
1 在线程入口函数中,调用return。 即退出线程入口函数,可以实现终止当前线程效果;
2 在线程执行的任意函数,调用当前线程退出函数,可以退出当前线程;
3 在任意位置,调用线程终止函数,并传入要终止线程的标识符,即pid,可以实现终止对应线程效果。