1.字符分类函数
islower:
#include <stdio.h>
#include <ctype.h>
int main()
{
int ret = islower('a');
printf("%d\n", ret);
return 0;
}
2.
写一个代码,将字符串的小写字母转换成大写字母,其它字符不变。
#include <stdio.h>
#include <ctype.h>
int main()
{
char arr[] = "I am a student.";
int i = 0;
while (arr[i] != '\0')
{
if(islower(arr[i]))
{
arr[i] -= 32;
}
i++;
}
printf("%s\n", arr);
return 0;
}
3.
模拟实现strlen函数
#include <stdio.h>
#include <ctype.h>
#include <string.h>
size_t my_strlen(char* x)
{
if (*x != '\0')
{
return 1 + my_strlen(x + 1);
}
else
{
return 0;
}
}
int main()
{
char arr[] = "abcdef";
size_t ret = my_strlen(arr);
printf("%zd\n", ret);
return 0;
}
4.strcpy函数的使用
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[] = "Hello World";
char arr2[20] = {0};
strcpy(arr2, arr1);
printf("%s\n", arr2);
return 0;
}
5.strcpy函数的模拟
#include <stdio.h>
#include <string.h>
#include <assert.h>
void* my_strcpy(char* x, char* y)
{
assert(x && y);
void* ret = x;
while (*y != '\0')
{
*x = *y;
x++;
y++;
}
*x = *y;
return ret;
}
int main()
{
char arr1[] = "abcdef";
char arr2[20] = { 0 };
my_strcpy(arr2, arr1);
printf("%s\n", arr2);
return 0;
}
6.strcat函数的使用
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[20] = "Hello ";
char arr2[20] = "World";
strcat(arr1, arr2);
printf("%s\n", arr1);
return 0;
}
7.strcat函数的模拟
#include <stdio.h>
#include <string.h>
#include <assert.h>
char* my_strcat(char* x, char* y)
{
assert(x && y);
char* ret = x;
while (*x != '\0')
{
x++;
}
while (*y != '\0')
{
*x = *y;
x++;
y++;
}
*x = *y;
return ret;
}
int main()
{
char arr1[20] = "Hello ";
char arr2[20] = "World";
my_strcat(arr1,arr2);
printf("%s\n", arr1);
return 0;
}
8.strcmp函数的实现
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[20] = "abcde";
char arr2[20] = "abq";
int ret = strcmp(arr1,arr2);
printf("%d\n",ret);
return 0;
}
9.strcmp函数的模拟
#include <stdio.h>
#include <string.h>
#include <assert.h>
int my_strcmp(const char* x,const char* y)
{
assert(x && y);
while (*x == *y)
{
x++;
y++;
}//相等就比较下一对
if (*x > *y)
{
return 1;
}
else if (*x < *y)
{
return -1;
}
else
{
return 0;
}
}
int main()
{
char arr1[20] = "abcde";
char arr2[20] = "abq";
int ret = my_strcmp(arr1,arr2);
printf("%d\n", ret);
return 0;
}
10. strncpy的实现
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[20] = "abcdef";
char arr2[20] = { 0 };
strncpy(arr2, arr1, 3);
printf("%s\n",arr2);
return 0;
}
11.strncat函数的实现
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[20] = "Hello ";
char arr2[20] = "World";
strncat(arr1, arr2,2);
printf("%s\n", arr1);
return 0;
}
12.strncmp函数的实现
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[20] = "Hello ";
char arr2[20] = "World";
int ret = strncmp(arr1, arr2,3);
printf("%d\n", ret);
return 0;
}
13.strtok函数的实现
#include <stdio.h>
#include <string.h>
int main()
{
char arr[] = "wang@zeyu.185";
char buf[256] = { 0 };
strcpy(buf, arr);
char sep[] = "@.";
for (char* ret = strtok(buf, sep); ret != NULL; ret = strtok(NULL, sep));
{
printf("%s\n", ret);
}
return 0;
}
14.strtok函数的实现
#include <stdio.h>
#include <string.h>
int main()
{
char arr[] = "wang@zeyu.185";
char buf[256] = { 0 };
strcpy(buf, arr);
char sep[] = "@.";
char* ret = NULL;
for ( ret = strtok(buf, sep); ret != NULL; ret = strtok(NULL, sep))
{
printf("%s\n", ret);
}
return 0;
}
15.strstr函数的实现
#include <stdio.h>
#include <string.h>
int main()
{
char arr[] = "abcdefgh";
char* ps = "cdef";
char* ret = strstr(arr, ps);
printf("%s\n", ret);
return 0;
}
16.strstr函数的模拟
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
const char* my_strstr(char* x,char* y)
{
char* s1 = NULL;
char* s2 = NULL;
char* cur = x;
if (*y == '\0')
{
return x;
}
while (*cur)
{
s1 = cur;
s2 = y;
while (*s1 && *s2 && *s1 == *s2)
{
s1++;
s2++;
}
if (*s2 == '\0')
return cur;
cur++;
}
return NULL;
}
int main()
{
char arr[] = "abcdefgh";
char* ps = "cdef";
char* ret = my_strstr(arr, ps);
printf("%s\n", ret);
return 0;
}