2015-10-18 66 views
1

这是我的项目代码。它还没有完成,因为我坚持最后的scanf(在printf("Enter option:")之后)。按下两个键后,我的程序终止。我也尝试过char和%c,但它不起作用。希望您能够帮助我。我无法输入一个字符。我的程序终止

void main() 
{ 

    char user[20], pass[500]; 
    int i, a; 
    clrscr(); 
    gotoxy(30,7); printf("ACCESS THE SYSTEM"); 
    gotoxy(28,9); printf("Username: "); 
    gets(user); 
    gotoxy(28,11); printf("Password: "); 
    for(i = 0; i< 500; i++) 
    { 
     pass[i] = getch(); 
     if(pass[i] == 13) 
     { 
      pass[i] = 0; 
      break; 
     } 
     printf("*"); 
    } 
    gotoxy(30,15);printf("ACCESS GRANTED!"); 
    gotoxy(24,20);printf("Please press any key to proceed: "); 
    scanf("%d", &a); 
    topics(); 
    getch(); 
} 

int topics(){ 

    int opt; 
    clrscr(); 
    gotoxy(25,5);printf("ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"); 
    gotoxy(25,6);printf("º Computer Programming Topics: º"); 
    gotoxy(25,7);printf("ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n"); 
    gotoxy(13,9);printf("Choose one:"); 
    gotoxy(13,11);printf("[A] Conditional Statements"); 
    gotoxy(13,13);printf("[B] Looping Statements"); 
    gotoxy(13,15);printf("[C] Functions"); 
    gotoxy(13,17);printf("[D] Arrays"); 
    gotoxy(13,19);printf("[E] Strings"); 
    gotoxy(13,22);printf("Enter option:"); 
    gotoxy(13,23);scanf("%d", &opt); 
    getch(); 
} 
+2

*从不*使用获取。改用fgets。只是为了向后兼容才得到语言保留,并且自第一次实施前约20分钟就已弃用。不要使用它。 –

+0

其实''gets'已经从C标准中移除了*。 –

+0

发布的代码似乎是一个'ncurses'程序。发布的代码中缺少一个重要的细节。具体来说,哪些头文件正在#included中? – user3629249

回答

0

给出该代码,在main()

gotoxy(24,20);printf("Please press any key to proceed: "); 
    scanf("%d", &a); 
    topics(); 
    getch(); 

行:`的scanf( “%d”,&一个);要求输入以“返回”键结束,该键在输入流中放入一个换行符,这在此处不会被使用。

topics()函数包含一个getch(),它从输入流中获取'return'键。

注意:“返回”键不是topics()函数的有效输入。

然后用户必须输入main()中最后的getch()的另一个按键。然后执行运行结束main(),导致程序退出。

推荐:在main()的行:scanf("%d", &a);getch()

张贴的代码代替,调用topics()(它获取一个按键),那么,多了一个按键,并且程序退出之后。

如果您希望程序继续执行,那么在调用topics()之后需要执行一些其他代码。

+0

非常感谢!:)现在它工作得很好。 – Des

相关问题