字符库函数编写练习



掌叔
2008-06-17 09:44:08

摘自:Etual.cublog.cn

#include
//#include
#include
#include "malloc.h"

int strcmp(const char *str1,const char *str2)
{
while(*str1 != '' && *str2 != ''){
if (*str1 == *str2){
str1++;
str2++;
continue;
}else if (*str1 > *str2){
return 1; // >
}else{
return -1; // <
}
}
if (*str1 == '' && *str2 == ''){
return 0;
}
if (*str1 != ''){
return 1;
}
if (*str2 != ''){
return -1;
}
return 0;
}

int strlen(const char *str1)
{
int count=0;

if (str1 == NULL){
return 0;
}else{
while(*str1 != ''){
str1++;
count++;
}
}
return count;
}
char *strcpy(char *str1,const char *str2)
{
if (str2 == NULL){
return NULL;
}
while(*str2 != ''){
*str1++ = *str2++ ;
}
*str1='';
return str1;
}
char *strcat(char *str1,const char *str2)
{
if (str2 == NULL){
return NULL;
}
str1 += strlen(str1);
while(*str2 != ''){
*str1++ = *str2++ ;
}
*str1='';
return str1;
}
void strinsert(char *str1,const char *str2,char ch)
{
char *str3;
char *pt=str1;
if (str2 == NULL){
return;
}
while((*pt != '') && (*pt != ch)){
pt++;
}
str3 = (char *)malloc(strlen(str2)); // allocate a memory block
strcpy(str3,pt); //save data
*pt = '';
strcat(str1,str2);
strcat(str1,str3);
free(str3);
}

#define MAXLEN 20
char Name[5][MAXLEN]={
"WANG ZHI GUO",
"WANG YA TAO",
"HE JIAN CHENG",
"LIU WEI LIANG",
"HE CAN WEI",
};

void sort(char *tbl[])
{
int i,j;
char *pTemp;
for (i=0;i<4;i++){
for (j=i+1;j<5;j++){
if (strcmp(tbl[i],tbl[j]) > 0){
pTemp=tbl[i];
tbl[i]=tbl[j];
tbl[j]=pTemp;
}
}
}
}
void init(char *tbl[])
{
int i;
for (i=0;i<5;i++){
tbl[i] = Name[i];
}
}

int main(void)
{
int i;
char *NameTbl[5];

init(NameTbl);
sort(NameTbl);
for (i=0;i<5;i++){
printf("%s
",NameTbl[i]);
}
printf("
");

// printf("%d
",strcmp(NameTbl[2],NameTbl[3]));
// printf("%s
",NameTbl[3]);


return 0;
}