C语言:puts(),gets(),strlen(),memset()函数编写
在我们的日常开发中经常会用到字符串相关函数的调用比如puts()字符输出函数,gets()字符输入函数,strlen()计算字符串的大小,memset()初始化字符串变量,对于一个新手来说第一步就是用好这几个API,最近学到了字符串的存储方式后,就想着可不可以自己编写个来用,于是就写了这篇字符串常用函数API的DIY。
1,C语言函数库中 puts()的功能和printf()都能输出字符或者字符串
函数原型:int puts(const char *string);
自己编写的:
int Myputs(char *p)
{
int cnt = 0;
while (*p != '\0')
{
putchar(*p++);
cnt++;
}
putchar('\n');
return cnt;
}
2、gets()函数
原型:char * gets ( char * str );
int Mygets(char *p)
{
int cnt = 0;
if(p == NULL)
{
printf("内存非法\n");
return;
}else{
while (*p = getchar())
{
if(*p == '\n')
{
return cnt;
}else{
cnt++;
p++;
}
}
}
}
3、strlen()函数
原型:extern unsigned int strlen(char *s);
int MyStrlen(char *p)
{
int cnt2 = 0;
while (*p != '\0')
{
cnt2++;
p++;
}
return cnt2;
}
4、memset()函数
原型:void *memset(void *s, int ch, size_t n);
char MyMemset(char *p,char c,int n)
{
while (n)
{
*p++ = c;
n--;
}
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int Myputs(char *p)
{
int cnt = 0;
while (*p != '\0')
{
putchar(*p++);
cnt++;
}
putchar('\n');
return cnt;
}
int Mygets(char *p)
{
int cnt = 0;
if(p == NULL)
{
printf("内存非法\n");
return;
}else{
while (*p = getchar())
{
if(*p == '\n')
{
return cnt;
}else{
cnt++;
p++;
}
}
}
}
int MyStrlen(char *p)
{
int cnt2 = 0;
while (*p != '\0')
{
cnt2++;
p++;
}
return cnt2;
}
char MyMemset(char *p,char c,int n)
{
while (n)
{
*p++ = c;
n--;
}
}
int main()
{
int num,cnt;
char *str2 = NULL;
char *str[128] = {'\0'};
char *p = "Chenlicheng hen shuai";
num = Myputs(p);
printf("num = %d\n",num);
num = MyStrlen(p);
printf("num = %d\n",num);
str2 = (char *)malloc(12);
MyMemset(str2,'a',12);
Myputs(str2);
printf("请输入:\n");
cnt = Mygets(str);
printf("cnt = %d\n",cnt);
Myputs(str);
return 0;
}