版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://www.blogbus.com/feizf-logs/5118044.html
现在在做一个软件,遇到这样一个小问题:从目录字符串 "/home/foxman/source_data/234.bin" 中提取出文件数字编号234。C/C++处理字符串的能力并不是很强,所以想到下面的实现代码:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
{
char *filename="/home/foxman/source_data/234.bin";
char *p=rindex(filename,'/'); //找到最后一个'/'所在位置,此后p="234.bin"
char s[20];
char *q=index(p,'.'); //从p中找到.出现的位置,此后q=".bin"
strncpy(s,p+1,q-p-1); //把p与q之间的字符复制给s,此后s="234"
s[q-p-1]='\0'; //在s数字字符串的末尾加上null
int b;
b=atoi(s); //将字符串s转化为整数, 此后b=234
printf("%d\n",b);
}
几个函数说明:
1. 查找字符串中第一个出现的指定字符
char * index( const char *s, int c);
函数说明 index()用来找出参数s字符串中第一个出现的参数c地址,然后将该字符出现的地址返回。字符串结束字符(NULL)也视为字符串一部分。
2. 查找字符串中最后一个出现的指定字符
char * rindex( const char *s,int c);
函数说明 rindex()用来找出参数s字符串中最后一个出现的参数c地址,然后将该字符出现的地址返回。字符串结束字符(NULL)也视为字符串一部分。
3. 拷贝字符串
char * strncpy(char *dest,const char *src,size_t n);
函数说明 strncpy()会将参数src字符串拷贝前n个字符至参数dest所指的地址。
4. 将字符串转换成整型数
int atoi(const char *nptr); (#include "stdlib.h")
函数说明 atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。