从此字符串中获取第一个值并将其转换为整数

时间:2012-04-30 07:42:57

标签: c

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

我需要获取第一个123456并将其存储为int,我该怎么做?

4 个答案:

答案 0 :(得分:2)

使用atoi(3)

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

);

答案 1 :(得分:1)

使用strtol(),它比atoi()做错误报告更好。

答案 2 :(得分: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);

答案 3 :(得分: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 
$