0

0-9またはの間に単一の整数を含む文字列があります(+, -, *, /)

基本的に、すべての文字/数字を読み込む必要があります。文字が +、-、* または / であるかどうかを確認しています。そうでない場合は、それが数字または無効な文字であることがわかります。私はatoiを使って整数に変換しています。atoi はどちらの場合も 0 を返します: 整数が 0 の場合、または無効な文字の場合。

他にどのようにこの区別を付けることができますか?

4

3 に答える 3

2

atoiを使用する前に、標準のisdigit()関数で各文字を確認してください

于 2012-10-17T20:49:23.380 に答える
0
int main (void)
{
    int i, j ;
    char num_string[] = "1 234 23 45" ;
    char tmp [2] = {'\0', '\0'} ;
    int length = strlen (num_string) ;
    int* values = (int*) malloc (sizeof (int) * length) ;
    for ( i = 0, j = 0; i < length; ++i)
    {
        if ( isdigit (num_string[i] ) )
        {
            tmp [0] = num_string [i] ;
            values [j++] = atoi (tmp) ;
        }
    }
    printf ("\nThe string: %s", num_string) ;
    printf ("\nThe integer array which results is: ") ;
    for ( i = 0; i < j; ++i)
        printf (" %d ", values[i]) ;
    return 0 ;
}

入力: 1 22 33 4 555

出力: 1 2 2 3 3 4 5 5 5

于 2012-10-23T06:13:40.277 に答える
0

strtolエラー検出を実行するために使用します。

于 2012-10-17T20:46:21.723 に答える