2017-02-13 4 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]puts(line[i]);は、文字列へのポインタではなく、char *ではありません。それは単なる文字です。これは問題を引き起こす可能性が最も高いです。

system("pause");は、エンドユーザーにとっては携帯性が低く、潜在的に危険です。 return 0;ステートメントに挿入するとき、IDEを使用してブレークポイントを配置することを検討してください。そうすれば、スクリプトの不要な一時停止、未知のコマンドや悪いエラーメッセージ、悪意のある攻撃によるセキュリティ違反などの心配はありません。

+0

'void main()'はいくつかのシステムで完全に有効です。 http://stackoverflow.com/a/31263079/584518もちろん、 'system()'の存在は、これがホストされたシステムであることを示唆しています。それでも、C99/C11の標準では、ホストされたシステムでもどの形式のmain()が許可されているかは不明です。 – Lundin

関連する問題