2016-02-08 87 views
1

每當我嘗試執行這段代碼時,如果我不使用getch()函數,它會突然關閉。此外,我已經嘗試了接受和打印像gets()puts()等字符串的不同組合。我的問題是什麼導致此錯誤,我該如何刪除此錯誤?程序在Visual C++中突然終止

void main() 
{ 
    char str[100]; 
    printf("Enter your string\n"); 
    fgets(str,100,stdin); 
    printf("%s",str); 
    getch(); 
} 
+1

嘗試從cmd會話中手動運行exe,然後程序輸出將出現在會話中並在程序退出後保留在屏幕上。 – Wossname

+0

您剛剛看到用戶從桌面上的快捷方式啓動程序時發生的情況。沒有「按任何鍵繼續」的代碼,完全相同的事情會發生。也許你不希望你的用戶從快捷方式運行它,只能從命令提示符運行它,沒關係,如果你想驗證輸出結果,只需在最後一個花括號上設置一個斷點即可。當然,最好的方法是讓程序以任何方式正確運行,使用GetConsoleProcessList()。 –

+0

爲什麼試圖在不檢查的情況下打印'str'就是'fgets()'成功了? – chux

回答

1
void main() 
{ 
    char str[100]; 
    printf("Enter your string\n"); 
    fgets(str,100,stdin); 
    printf("%s",str); 
    getch(); 
} 

對於一個小程序你有很多問題。

    您使用 getch();
  1. 需要你#include <conio.h>
  2. 您正在使用printf()家庭功能。這需要你#include <stdio.h>
  3. 的函數原型main()必須int main(void)你的情況

總之,這將是固定的代碼:

#include <stdio.h> 
#include <conio.h> 
int main(void) 
{ 
    char str[100]; 
    printf("Enter your string\n"); 
    fgets(str,100,stdin); 
    printf("%s",str); 
    getch(); 
    return 0; 
} 

從cmd.exe的運行它命令行窗口。

它關閉的原因是因爲在完成程序中的所有內容之後,程序自動終止。 Getch()只是讓系統等待另一個輸入。

+0

@AlterMann不夠公平,我編輯了答案來反映這一點。 – Magisch

+0

你提到的'include'語句在發佈這個問題之前已經提出了它 – user5451270

+0

@ user5451270你讀了其餘的嗎?如果還有什麼東西遺漏給你,你到底還有什麼問題?特別是閱讀最後一段關於爲什麼你需要getch()使其不終止。 – Magisch

0

這是運行並附加調試程序時的預期行爲。嘗試使用ctrl + f5運行。