2013-02-27 70 views
1
#include <stdio.h> 
#include <cstdlib> 

rec(); 

main() 
{ 
    int a, fact; 
    char q, n, y; 
    printf("\nEnter any number "); 
    scanf("%d", & a); 
    fact = rec(a); 
    printf("Factorial value = %d\n", fact); 
    printf("do you want to exit.....(y/n):"); 
    scanf("%s" ,&q); 
    if (q == 'n') 
    { 
     system("cls"); 
     main(); 
    } 
    else 
     return 0; 
} 

rec(int x) 
{ 
    int f; 
    if (x == 1) 
     return 1; 
    else 
     f = x * rec(x - 1); 

    return f; 
} 

我使用的代码块,但我不知道如何清除屏幕。我搜索后发现在头文件#include<cstdlib>内的system("cls");,但它显示错误cstdlib: no such file of directory。我该怎么办 ?如何从简单的C程序中清除屏幕?

+0

如果有疑问,请确实访问这些链接,要知道哪个函数属于哪个头文件或哪个头文件有哪个函数:-) [Alphabetical Index](http://pubs.opengroup.org/onlinepubs/ 009695399/idx/index.html)和[Headers Index](http://pubs.opengroup.org/onlinepubs/009695399/idx/headers.html) – 2013-02-27 02:59:10

+0

'main()' - >'int main(void)'和'rec();' - >'int rec(int x);' – 2017-03-05 05:31:30

回答

6

清除屏幕是正常的C程序的范围之外。这取决于操作系统。

对于windows,你应该看看

对于unix,请查看

system()总是启动一个子shell,它可能会或可能不会影响父程序的环境。你需要一个系统调用,但不是 a system()调用。


我并不总是知道这一点。我曾经(很久以前)在comp.lang.c中建议有人应该尝试system("exit");关闭DOS程序周围的窗口。但是,那当然是行不通的。我很快被建议在发布前测试我的代码。 :)

7

变化

#include <cstdlib> 

#include <stdlib.h> 

cstdlibC++头文件,因此将用C不可用。

+0

只是另一个屏幕的闪光来临。但curren屏幕仍然保持原样,没有清除屏幕 – 2013-02-27 02:42:26

+0

@RahulSubedi这真的是一个不相关的问题..看起来'system'打开一个新的终端,而不是使用当前的终端。你有没有尝试从命令行而不是从eclipse运行程序? – 2013-02-27 02:47:45

+0

我使用的是代码块 – 2013-02-28 06:07:04

4

你有很多的问题,在你的代码....

但对于具体问题,请尝试#include <stdlib.h>

+0

#include 也没有工作。只是另一个窗口闪现n消失n当前窗口保持不变而没有清除屏幕 – 2013-02-27 02:28:53

0

使用#include<stdlib.h>这就是定义清屏功能的地方。

-1

要使用system("cls")您需要标题<iostream>。这将允许所有system()类型执行。不确定它是否是C++头文件,但它适用于我使用的编译器。