从字符串中提取开头的数字:
在stdlib
标准库中:
long int strtol(const char *nptr,char **endptr,int base);
函数会扫描nptr字符串,跳过前面的空格字符,若遇数字则开始转换,再遇到字符(包括空格)后便返回。
endptr是一个传出参数,函数返回时指向返回时扫描的指针位置。
base代表采用的进制方式,范围从2至36,当base值为0时则是采用10进制做转换。
如:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[30] = " 200030300 This is 222 test";
char *ptr;
long ret;
ret = strtol(str, &ptr,10);
printf("num= %ld\n", ret);
printf("string=|%s|", ptr);
return(0);
}
则返回:
num=200030300
string=| This is 222 test|
将字符串转为浮点数:
相似的,在stdlib
标准库中:
double strtod(const char *nptr,char **endptr);
用来查找字符串开头的浮点数。
如:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[30] = " 20003.300 This is 222 test";
char *ptr;
double ret;
ret = strtod(str, &ptr);
printf("num= %lf\n", ret);
printf("string=|%s|", ptr);
return(0);
}
结果:
num= 20003.300000
string=| This is 222 test|
字符串查找:
在string
标准库中:
char *strstr(char *str1, char *str2);
用于判断字符串str2是否是str1的子串。
如果是,则该函数返回str2在str1中首次出现的地址;
否则,返回NULL。
#include <string.h>
#include <stdio.h>
int main()
{
char str1[30] = " This is 222 test";
char str2[4]="is";
long ret;
ret = strstr(str1,str2);
printf("return= %ld\n", ret);
printf("string=|%s|", ret);
return(0);
}
运行结果:
return=6356712
string=|is is 222 test|
类似的:
char * strchr(char * str,char ch);
功能就是找出在字符串str中第一次出项字符ch的位置