Linux C编程第四回 - 字符串相关


编程其实很多时候都在和字符串打交道,因为毕竟给人能够呈现出来的信息还是需要用到文字,用到字符串。

可能最大的字符串处理程序就是微软的office了。


第一个涉及到的头文件是 ctype.h,顾名思义,主要是用来确认字符类型的。

函数原型如下:

int isxxx( char c );

常用的应该是isalpha, 和 isalnum, 分别是字母,字母和数字。

在C标准库里边找到了一张图,感觉它总结的很不错。




第二个需要介绍的是字符串到数字的转换,就是把“100”转换成int a=100;

这种转换对应的c标准库头文件是stdlib.h

转double型 double atof( char *ptr );

转int型 int atoi( char *ptr );

转long型 long atol( char *ptr );

还有一个把double转换成char的,有点复杂, 输入参数包含num和ndigit分别代表需要转换的数,以及我想要的位数(可能是因为double类型小数点后边太多吧),输出参数就是后边两个,decp代表小数点位置(输出的字符串是不含有小数点的,自己可以通过这个参数再加上去),sign代表正负符号。

char *ecvt( double num, int ndigit, int *decp, int *sign);

可能更加常用的还是sprintf

int sprintf( char *buffer, const char *format, [ argument] … );


第三个是关于串的处理,c标准库有一个string.h,在这个头文件里边定义了NULL, size_t等

里边定义了关于串的常用处理操作,包含:比较,复制,赋值,查找,连接,分割等功能。

1.比较,比较操作返回0,代表两个字串相等

int memcmp(const void *, const void *, size_t);

int strcmp(const char *, const char *) ;

2.复制

char * strcpy( char *dest, char *src );

char * strncpy( char *dest, char *src, size_t n ) ;

3.赋值

void *memset (void *a, int c, size_t n) ;

4.查找

char * strchr( const char *s, int c ); 返回第一个匹配的字符c的位置指针, strchr( "abc", '\0' ),返回结束符指针。

char * strrchr( const char *s, int c ); 反着找

接下来这个查找是异常查找,没找到才返回,比如一个串“abc1”,匹配串是"abcdefg",代表可以接受的字符集合

size_t *strspn( const char *s, const char *accept ); //返回3,指向”1“

还有一个strcspn,把accept集合变成了,”notaccept“

size_t *strspn( const char *s, const char *notaccept ); //返回0,指向”a“


5.连接

char *strcat( char *dest, const char *src )

6.分割,分割这个函数以前从来没用过,遇到过一个比较复杂的串需求(类似了QQ表情支持的文字自动转图片功能),当时是自己用了一个状态机实现的。

注意:*这个函数是带缓存的*, 它是用delim里边的任意字符来分割dest串,

char * strtok ( char *dest, const char *delim )

第一次调用很好理解,返回分割后的串,第二次dest传入NULL,就等同于继续分割。

举个例子

char str[] = "abc;def,ghi";
char *t;
t = strtok(str, ";,:");       /* t == */
t = strtok(NULL, ";,:"); /* t == "def" */
t = strtok(NULL, ";,:"); /* t == "ghi" */
t = strtok(NULL, ";,:"); /* t ==NULL */



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对你的问题,下面是关于 Linux Shell 编程中的特殊变量和占位符的介绍。 1. 特殊变量 Shell 中有一些特殊的变量,它们的值在不同的情况下会自动设置。下面是一些常用的特殊变量: - $0 :当前脚本的文件名。 - $1~$9 :当前脚本的参数,$1 表示第一个参数,$2 表示第二个参数,以此类推。 - $# :表示传递给脚本或函数的参数个数。 - $@ :表示传递给脚本或函数的所有参数。 - $? :上一个命令的返回值,如果返回值为 0 表示命令执行成功,否则表示执行失败。 - $$ :当前脚本的进程 ID。 2. 占位符 在 Shell 编程中,还有一些占位符可以在字符串中使用,它们可以用来表示一些特殊的字符或者变量。下面是一些常用的占位符: - $变量名 :表示变量的值。例如,$name 表示变量 name 的值。 - ${变量名} :和 $变量名 一样,表示变量的值,但是可以避免歧义。例如,${name}_string 表示 name_string 变量的值。 - $((运算式)) :进行算术运算,例如 $((2+3)) 表示计算 2+3 的值。 - $[运算式] :和 $((运算式)) 一样,进行算术运算。 - $* :表示所有参数,以空格分隔。例如,"$*" 表示所有参数组成的一个字符串。 - $@ :和 $* 一样,表示所有参数,但是每个参数都用双引号括起来。例如,"$@" 表示所有参数组成的一个字符串,每个参数都用双引号括起来。 希望以上内容能够解决你的问题,如果还有其他疑问,可以继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值