"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
$