表头文件:#include <string.h>
函数定义:int strncasecmp(const char *s1, const char *s2, size_t n)
函数说明:
strncasecmp()用来比较参数s1和s2字符串前n个字符,比较时会自动忽略大小写的差异。
返回值 :
若参数s1和s2字符串相同,则返回0; 若s1大于s2,则返回大于0的值; 若s1小于s2,则返回小于0的值。
#include <string.h>
main()
{
char *a="aBcddfefekr";
char *b="AbCddfefekr";
printf("%d\n", strncasecmp(a, b));
}
sscanf
sscanf() - 从一个字符串中读进与指定格式相符的数据。
成功则返回参数数目,失败则返回0,错误原因存于errno中。
函数原型:
int sscanf(const char *buffer,const char *format,[argument ]...);
buffer存储的数据
format格式控制字符串
argument 选择性设定字符串
sscanf会从buffer里读进数据,依照format的格式将数据写入到argument里。
代码示例:
int atoz(char *s){
int a;
if(!strncasecmp("0x", s, 2)){
sscanf(s, "%x", &a);
return a;
}
return atoi(s);//把字符串转换成整型数。ASCII to integer 的缩写
}
atoi()函数
int atoi(const char *nptr);
参数nptr字符串,如果
第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回
整型数。否则,返回零,
头文件: #include <
stdlib.h>
程序例:
1)
1
2
3
4
5
6
7
8
9
10
|
#include <stdlib.h>
#include <stdio.h>
int
main(
void
)
{
float
n;
char
*str =
"12345.67"
;
n =
atoi
(str);
printf
(
"string = %s integer = %f\n"
, str, n);
return
0;
}
|
执行结果:
string = 12345.67 integer = 12345.0
2)
1
2
3
4
5
6
7
8
9
10
11
|
#include <stdlib.h>
#include <stdio.h>
int
main()
{
char
a[] =
"-100"
;
char
b[] =
"123"
;
int
c ;
c =
atoi
( a ) +
atoi
( b ) ;
printf
(
"c = %d\n"
, c) ;
return
0;
}
|
执行结果:
c = 23
简单的实现atoi函数
源代码:
1
2
3
4
5
6
7
8
9
10
|
#include <cctype>
int
my_atoi(
const
char
* p){
assert
(p != NULL);
bool
neg_flag =
false
;
// 符号标记
int
res = 0;
// 结果
if
(p[0] ==
'+'
|| p[0] ==
'-'
)
neg_flag = (*p++ !=
'+'
);
while
(
isdigit
(*p)) res = res*10 + (*p++ -
'0'
);
return
neg_flag ?0 -res : res;
}
|