-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 回答