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;
}