常用字符串处理函数

1、 char *strstr(char *str1, char *str2);
功能:从字符串str1中查找是否有字符串str2,如果有,从str1中的str2位置起,返回str1中str2起始位置的指针,如果没有,返回null。
返回值:返回该位置的指针,如找不到,返回空指针。

2、char *strcpy (char *dest, const char *src);

复制字符串src到dest中。返回指针为dest的值。

3、char *strcat (char *dest, const char *src);

将字符串src添加到dest尾部。返回指针为dest的值。

4、char *strchr (const char *s, int c);

在字符串s中搜索字符c。如果搜索到,返回指针指向字符c第一次出现的位置;否则返回NULL。

5、int strcmp (const char *s1, const char *s2);

比较字符串s1和字符串s2。返回值是s1与s2第一个不同的字符差值。

6、char *strerror(int errnum);

返回指针指向由errnum所关联的出错消息字符串的首地址。errnum的宏定义见errno.h。

7、size_t strlen (const char *s);

返回值是字符串s的长度。不包括结束符'/0'。

8、char *strlwr (char *s);

将字符串s全部转换成小写。返回指针为s的值。

9、char *strupr (char *s);

将字符串s全部转换成大写。返回指针为s的值。

10、char *strstr (const char *s1, const char *s2);

在字符串s1中搜索字符串s2。如果搜索到,返回指针指向字符串s2第一次出现的位置;否则返回NULL。

11、char *strtok (char *s1, const char *s2);

用字符串s2中的字符做分隔符将字符串s1分割。返回指针指向分割后的字符串。第一次调用后需用NULLL替代s1作为第一个参数。

12、char *strncpy (char *dest, const char *src, size_t maxlen);

复制字符串src到dest中,最多复制maxlen个字符。返回指针为dest的值。



例程:check_ftpcmd函数功能:判断用户输入的FTP命令是否是合法的命令并保存命令及其参数至cmd中

/*execute ./a.out ls
 *		or ./a.out dir
 */
#include<stdio.h>
#include<string.h>
#define CMDSIZE 	64
#define ARGSIZE 	64
struct ftpcmd{
	char *alias;
	char *name;
	char *args;
	void(*handler)(char *args);
};
void do_print(char * args)
{
	printf("%s\n",args);
}
struct ftpcmd ftp_cmd[]= 
{
	{"dir","LIST",NULL,do_print},
	{"ls","LIST",NULL,do_print}
};
#define CMD_NUM (sizeof(ftp_cmd)/sizeof(ftp_cmd[0]))

int main(int argc,char *argv[])
{
	int found;
	char cmd[CMDSIZE];
	char args[CMDSIZE];
	found=check_ftpcmd(argv[1], cmd);
	if(found<0)
		printf("Invalid cmd ");
	return 0;
}
int check_ftpcmd(char *cmd_str,char *cmd)
{
	int found,i,j;
	int withargs=0;
	char *p=NULL;
	i=j=0;
	/*clear the array cmd which used for storing FTP commond*/
	memset (cmd,0,CMDSIZE);
	
	/*delete the left space of of commond string */
	while(*(cmd_str+j)==32)//Space 
		j++;
	
	/*if did't carried parameter,use cmd_str directly,otherwise drop the parameter*/
	if(!strstr(cmd_str+j," "))
		//did'nt carried parameter
		p = cmd_str+j;
	else
	{
		/*obtain the commond string before the first parameter*/
		p=strtok(cmd_str+j," ");
		withargs = 1;
	}
	/*Traversal Check whether the input string matches*/
	while(i<CMD_NUM) {
		if(!strcmp(p,ftp_cmd[i].alias)){
			found = i;
			break;
		}
		i++;
	}
	if(i==CMD_NUM)
		/*not found*/
		found =-1;
	else 
	{
		ftp_cmd[i].handler(ftp_cmd[i].alias);
		strncpy(cmd,ftp_cmd[i].name,strlen(ftp_cmd[i].name));
		if(withargs)
		{
			/*obtain the rest posible parameter*/
			while(p=strtok(NULL," "))
			{
				strcat(cmd," ");
				strcat(cmd,cmd);
			}
		}
	}
	return found;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值