2016-12-17 3 views
-3

У меня проблема.Проверьте, не содержит ли имя только алфавит

int main() 
{ 

    char name[100]; 

    do 
    { 
     printf("Input name : "); 
     scanf("%[^\n]", name); 
     fflush(stdin); 
    }while() // I don't know what to put here 
} 

Проблема заключается в том, как закодировать «имя ввода», если мой вход не является всем алфавитом. Например, если я введу «steve1», тогда он снова попросит имя; если я введу «Steve», тогда он не будет зацикливаться.

+0

'fflush (stdin);' не имеет никакого смысла и является ошибкой. Один предполагает, что вы хотите для русского алфавита –

ответ

0

Напишите отдельную функцию и используйте ее в состоянии цикла. Например,

#include <ctype.h> 

//... 

int valid_name(const char *name) 
{ 
    while (*name && isalpha((unsigned char)*name)) ++name; 

    return *name == '\0'; 
} 

//... 

do 
{ 
    //... 
} while (!valid_name(name)); 
+0

Я не понимаю, где это поставить. Не могли бы вы уточнить? Извините, я все еще начинаю на этом –

+0

@DonnyAvaris Поместите определение функции до main. –

+0

Это должно дать предупреждение для отбрасывания 'const'. Не только нет оснований, но я также не понимаю, почему вы бросаете вообще. – Olaf

Смежные вопросы