2017-02-13 52 views
-2

輸入字符串後會出現一些奇怪的錯誤。任何幫助,將不勝感激。我到目前爲止:如何識別用戶輸入的字符串中的所有元音

#include <stdio.h> 
#include <string.h> 

void main() 
{ 
    int i; 
    char line[100]; 

    printf("Enter a string: \n"); 
    gets(line); 

    for (i = 0; line[i] != '\0'; i++) 
    { 
     if (line[i] == 'a' || line[i] == 'e' || line[i] == 'i' || line[i] == 'o' || line[i] == 'u' || line[i] == 'A' || line[i] == 'E' || line[i] == 'I' || line[i] == 'O' || line[i] == 'U') 
     { 
      puts(line[i]); 
     } 
    } 
    system("pause"); 
} 
+4

什麼是錯誤?細節,男人,細節... – AntonH

+4

打開完整的警告。 'puts()'的參數必須是'char *',但'line [i]'是'char'。你想'putc()'。 – Barmar

+0

assignmen5.exe中的0x0f5067cf(msvcr100d.dll)未處理的異常:0xC0000005:寫入位置0xffffffcc的訪問衝突。另一個代碼窗口彈出一堆代碼 – DaftTommy

回答

1

void main()不是有效的入口點。你可能意思是int main(void)

line[i] in puts(line[i]);不是char *,更不用說指向字符串的指針;它只是一個角色。這很可能會導致問題。

system("pause");對最終用戶來說很煩人,不便攜且有潛在危險。考慮使用您的IDE在插入該語句時在您的return 0;聲明中放置一個斷點。這樣,您的最終用戶將不會受到腳本中不必要的暫停,關於未知命令或更糟的錯誤信息的困擾,由於惡意暫停.sh被放置在某處...

+0

'void main()'在某些系統中完全有效,最顯着的是獨立式。 http://stackoverflow.com/a/31263079/584518。儘管'system()'的存在確實表明這是一個託管系統。即使如此,即使對於託管系統,C99/C11標準也不清楚哪些形式的main()是允許的。 – Lundin

相關問題