linux c 字符串处理

原文地址:http://blog.chinaunix.net/uid-22985736-id-130099.html

在C语言中,没有单独的字符串数据类型,而是通过字符数组的操作来实现的。字符串的内容保上在字符数组里,规定以“\0”为字符串的结束标志。
一、字符串的定义和初始化
char url[15]={'w','w','w','.','w','i','n','f','i','m','.','n','e','t','\0'};
char url[15]={""};
定义的同时进行初始化,则可以不指定其大小,如:
char url[]={""};
使用写符数组的方式进行初始化时,需加上‘\0’结束符。

二、字符串的处理
1.用printf函数和scanf函数处理时,其参数为字符数组名,而非字符元素名。
char url[20];
scanf("%s",url);
printf("%s",url);
用printf以“%s”格式输出字符串时,遇到“\0”就自动停止,且输出的字符中不包含“\0”。
用scanf以“%s”格式输入字符串时,当用户回车后,系统会自动在末尾处加上一个“\0”,例如:
char url[20];
scanf("%s",url;
当用入输出后,其内存存储方式为:
|w|w|w|.|w|i|n|f|i|r|m|.|n|e|t|\0|
上面已经提到,能数为字符数组名,而无需再加上取地址符(&)。

2.用C语言库函数中提供的字符串处理函数。
(1)puts(char *str);//char str={""};puts(str);
(2)gets();//get(str);
(3)char *strcat(char *dest,const char *src);//将参数src字符串复制到参数dest所指的字符串尾,前提是参数dest要有足够的空间来容纳要复制的字符串。
(4)char *strcpy(char *dest,const char *src);//将参数src字符串复制至参数dest所指的字符串中。
char *strncpy(char *dest,const char *src,size_t n);将参数src字符串前n个字符复制至参数dest所指的字符串中。
(5)int strcmp(const char *s1,const char *s2);//比较参数s1和参数s2字符串,C言语中是不能用if(s1>s2)这样的方式来比较字符串大小的。参数s1和s2所有字符相同则返回0;参数s1大于参数s2则返回正值;参数s1小于参数s2则返回负值。
(6)size_t strlen(const char *str);//用于计算指定字符串str的长度,不包含结束符“\0”。
在Linux下使用fget函数时,通常会有警告“the "gets" function is dangerous and should not be used”出现,提示我们在Linux下慎用gets函数,而推荐使用fgets函数,最好不要使用gets,因为它不检测读回来的数据长度是否超过自己所拥有的buff的长度,所以有可能会造成溢出。所以它的使用会造成程序的潜在隐患,会使程序不安全,可以是用fgets()来代替它。另外gets从终端读入是的字符串是用\0结束的,而fgets是以\n结束的,在用strcmp函数进行字符串比较时要犹为注意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值