概述
strcmp 字符串比较
函数原型
extern int strcmp(const char *s1,const char *s2);
说明
C/C++函数,比较两个字符串
设这两个字符串为str1,str2,
若str1==str2,则返回零;
若str1<str2,则返回负数;
若str1>str2,则返回正数。
matlab中函数,strcmp(s1,s2) 判断两个字符串s1和s2是否相同,相同返回true ,不同返回false
注意事项
参数s1和s2都不为空。
strncmp 字符串前n个字符比较
函数原型
int strncmp ( const char * str1, const char * str2, size_t n );
说明
str1, str2 为需要比较的两个字符串,n为要比较的字符的数目。
若str1与str2的前n个字符相同,则返回0;若s1大于s2,则返回大于0的值;若s1 小于s2,则返回小于0的值。
注意事项
参数s1和s2都不为空。
sprintf 格式化字符串
函数原型
int sprintf( char *buffer, const char *format, [ argument] … );
说明
sprintf指的是字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数。
注意事项
使用sprintf 对于写入buffer的字符数是没有限制的,这就存在了buffer溢出的可能性。
snprintf 安全格式化字符串
函数原型
int snprintf(char *str, size_t size, const char *format, ...)
参数
str 需要格式化输入的字符串
size 格式化后字符串大小限制
说明
将可变个参数(…)按照format格式化成字符串,然后将其复制到str中
(1) 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符(’ ’);
(2) 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符(’ ’),返回值为欲写入的字符串长度。。
注意事项
1、要比较的字符包括字符串结束标志’ ’,而且一旦遇到’ ’就结束比较,无论n是多少,不再继续比较后边的字符。
2、2个字符串都不为空
sscanf 格式化读取
函数原型
int sscanf( const char *buffer, const char *format, [ argument ] ... );
参数
buffer 存储的数据
format 窗体控件字符串。 有关详细信息,请参阅"格式规范"。
argument 可选自变量
locale 要使用的区域设置
说明
sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。
第二个参数可以是一个或多个
{%[*] [width] [{h | I | I64 | L}]type | ' ' | 't' | 'n' | 非%符号}
注:
1、 * 亦可用于格式中, (即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中)
2、 {a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d。
3、 width表示读取宽度。
4、 {h | l | I64 | L}:参数的size,通常h表示单字节size,I表示2字节 size,L表示4字节size(double例外),l64表示8字节size。
5、type :这就很多了,就是%s,%d之类。
6、特别的:%*[width] [{h | l | I64 | L}]type 表示满足该条件的被过滤掉,不会向目标参数中写入值
失败返回0 ,否则返回格式化的参数个数
7、如果读取的字符串,不是以空格来分隔的话,就可以使用%[]。
返回结果
每个函数都将返回成功转换并分配的字段数;
返回值不包括已读取但未分配的字段。 返回值为 0 表示没有分配任何字段。 返回值是EOF是否有错误或如果在第一次转换之前到达字符串结尾。
如果buffer或format是NULL调用指针,无效参数处理程序,如中所述参数验证。 如果允许继续执行,则这些函数返回 -1 并将errno设置为EINVAL。
成功则返回参数数目,失败则返回-1,错误原因存于errno中。
经多次测试[来源请求],在linux系统中成功返回的是成功转换的值的个数,例如:
sscanf(“1 2 3”,"%d %d %d",buf1, buf2, buf3); 成功调用返回值为3,即buf1,buf2,buf3均成功转换。
sscanf(“1 2”,"%d %d %d",buf1, buf2, buf3); 成功调用返回值为2,即只有buf1,buf2成功转换。
(注意:此处buf均为地址)
strcpy 字符串复制
函数原型
#include <string.h>
char *strcpy(char* dest, const char *src);
说明
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
注意事项
一:若数组长度不足以容纳整个字符串,则程序运行崩溃。
strncpy 字符串复制
函数原型
char *strncpy(char *dest,char *src,size_t n);
使用实例
#include<stdio.h>
#include<string.h>
int main(){
char name[]={"Chinanet"},dest[20]={};
strncpy(dest,name,3);
dest[3]='