-2
"123456\000\";\"Bilka\";\"Tilst afdelingen\";\"Ager\370vej 7\";\"Port 39\";\"8381\";\"Tilst\";\"25\";\"100\";\"125\";\"90\";\"Phi"

最初の 123456 を取得して int として保存する必要があります。これを行うにはどうすればよいですか?

4

4 に答える 4

2

atoi(3)を使う

int n = atoi("123456\000\";\"Bilka\";\"Tilst afdelingen\";\"Ager\370vej 7\";\"Port 39\";\"8381\";\"Tilst\";\"25\";\"100\";\"125\";\"90\";\"Phi"

);

于 2012-04-30T07:46:16.880 に答える
1

strtol() を使用すると、atoi() よりも優れたエラー レポートが得られます。

于 2012-04-30T08:06:39.140 に答える
1

を使用しsscanf()ます。

char *str = "123456\000\";\"Bilka\";\"Tilst afdelingen\";\"Ager\370vej 7\";\"Port 39\";\"8381\";\"Tilst\";\"25\";\"100\";\"125\";\"90\";\"Phi";
int num = 0;

sscanf(str, "%d", &num);
printf(" The extracted number is %d.\n", num);
于 2012-04-30T08:15:50.080 に答える
0

または以下のプログラムを使用できます。ただし、移植性がなく、マシンが文字セットatoiを使用することを前提としているため、以下のプログラムはお勧めしません。acsii

#include <stdio.h>

int atoi_1(char a[])
{
    int n=0;

    if (a[0] >= '0' && a[0] <= '9') {
        n = a[0]-'0';
    } else {
        /* exception - a[0] is not an integer */
        printf("exception - a[0] is not an integer \n");
    }

    return n;
}

int main()
{
    char a[] = "123456\000\";\"Bilka\";\"Tilst afdelingen\";\"Ager\370vej 7\";\"Port 39\";\"8381\";\"Tilst\";\"25\";\"100\";\"125\";\"90\";\"Phi";

    printf("a[0] = %d \n", atoi_1(a));
    return 0;
} 

出力:

$ gcc atoi.c 
$ ./a.out 
a[0] = 1 
$
于 2012-04-30T07:52:09.877 に答える