2017-05-08 12 views
0

文字列関数を1つだけ使用して、ユーザー入力文字列にすべての文字が含まれているかどうかを確認する必要があります。 a、e、i、o、u ...どうすればいいですか? (上記の文字は、ユーザーが入力した文字列で伝染する必要はありません) 助けてください。Cの文字列内の特定の文字をチェックする方法は?

+4

は、これまでのあなたの努力を表示します。 SOは私のためのコードではありません.... – LPs

+1

'strchr'を使用しますか? – BLUEPIXY

答えて

3

あなたは、引数strで指された文字列内の文字cの最初に出現した(unsigned char型)のための機能にstrchr

char *strchr(const char *str, int c) 

この機能検索を使用することができます。 文字がcでない場合、nullが返されます。

可能な実装の一つがここに示されている -

#include <stdio.h> 
#include <string.h> 
#define SIZE 5 
int main() 
{ 
    char toCheck[5] = {'a','e','i','o','u'}; 
     // Array of characters required in the string. 
    char userstring[25]; // User String 
    int i; 
    printf("Enter your string : \n"); 
    scanf("%s",userstring); 

    for(i=0;i<SIZE;i++){ 
     if(strchr(userstring,toCheck[i])==NULL) 
      break; 
    } 
    if(i==SIZE) 
     printf("All Required Characters present"); 
    else printf("All Required Characters not present"); 

    return 0; 
} 
2
#include <stdio.h> 
#include <string.h> 
#include <stdbool.h> 

bool containsAll(const char *input, const char *contains){ 
    bool check[256] = { false }; 
    while(*input){ 
     check[(unsigned char)*input++] = true; 
    } 
    while(*contains){ 
     if(!check[(unsigned char)*contains++]) 
      return false; 
    } 
    return true; 
} 

int main(void){ 
    char input[256]; 
    fgets(input, sizeof input, stdin); 
    input[strcspn(input, "\n")] = 0; 
    if(containsAll(input, "aeiuo"))//"aeiuo\n" 
     puts("yes"); 
    else 
     puts("no"); 
} 
関連する問題