Isdigit不承认Char *喜欢数字

时间:2014-10-31 19:30:02

标签: c pointers

这是我的代码,我想知道为什么我的char *bdin没有被重新编号为数字,当它在函数isdigit()中被检查时?这是我改进的getline和我的检查功能,对于检查功能,不要看参数,我只是创建了实验功能。我想当我将bdin放入函数isdigit()时,它会将它们提供给第一个元素[0]。我也尝试使用(char *) (bdin)[0]来获取第一个元素,因为其他元素是'\n''\0',但它仍然没有工作......

int getline(char *ulaz)
{
    int i , c;
    for ( i = 0; (c = getchar())!= EOF && c!='\n';i++, ulaz++)
            *ulaz = c;

    if ( c =='\n')
    *ulaz++ = '\n';
        *ulaz = '\0';
    return i;
}

void checker(void)
{
    int duzina;
    char *bdin;
    duzina = getline(&bdin);
if ( isdigit(bdin))
    printf("It is digit!!\n");
    else
        printf("no!\n");
}

1 个答案:

答案 0 :(得分:1)

程序有未定义的行为,因为你没有分配bdin指向的内存以及你要写入输入的位置。 此程序还有使用不正确数据类型的其他错误。 Fpr示例表达式的类型

&bdin

char **,而函数的相应参数的类型为char *

这个表达也没有意义。

ISDIGIT(bdin)

当您通过int时,函数isdigit的参数类型为char *您可以编写例如

if ( isdigit( *bdin ) )

if ( isdigit( bdin[0] ) )

但无论如何,该函数只检查一个字符是否为数字。