"123456\000\";\"Bilka\";\"Tilst afdelingen\";\"Ager\370vej 7\";\"Port 39\";\"8381\";\"Tilst\";\"25\";\"100\";\"125\";\"90\";\"Phi"
我需要获取第一个 123456 并将其存储为 int,我该怎么做?
"123456\000\";\"Bilka\";\"Tilst afdelingen\";\"Ager\370vej 7\";\"Port 39\";\"8381\";\"Tilst\";\"25\";\"100\";\"125\";\"90\";\"Phi"
我需要获取第一个 123456 并将其存储为 int,我该怎么做?
使用atoi(3)
int n = atoi("123456\000\";\"Bilka\";\"Tilst afdelingen\";\"Ager\370vej 7\";\"Port 39\";\"8381\";\"Tilst\";\"25\";\"100\";\"125\";\"90\";\"Phi"
);
使用 strtol(),它比 atoi() 更好地报告错误。
使用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);
您可以使用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
$