Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 检查名称是否只包含字母_C - Fatal编程技术网

C 检查名称是否只包含字母

C 检查名称是否只包含字母,c,C,我有个问题 int main () { char name[100]; do { printf("Input name : "); scanf("%[^\n]", name); fflush(stdin); }while() // I don't know what to put here } 问题是如果我的输入不全是字母,如何循环输入名称。例如,如果我输入steve1,它将再次要求输入名称;如果我输入Stev

我有个问题

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,它将不会循环

编写一个单独的函数,并在循环条件下使用它。比如说

#include <ctype.h>

//...

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

    return *name == '\0';
}

//...

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

我不知道该把它放在哪里。你能详细说明一下吗?对不起,我还是初学者this@DonnyAvaris将函数定义放在main之前。这应该为丢弃const发出警告。不仅没有理由这么做,我也不明白你为什么要投。我没有试过这一次,但对于类似的代码,我当然明白了。可能不是香草的选择,但无论如何,这些都不推荐,对初学者来说更少。但即使没有警告,如果使用正确的类型,也没有理由强制转换。我不引用函数外的语句,我知道您知道。isalpha unsigned char*name-是否需要强制转换?fflushstdin;没有任何意义,这是一个错误。一是假设你想要俄语字母表