WY c语言进阶
1)字符串函数strlen的实现
#include <stdio.h> #include <string.h> size_t mylen(const char* s) { int cnt = 0; int idx = 0; while (s[idx] != '\0' ){ idx++; cnt++; } return cnt; } int main(int argc, char const *argv[]) { char line[] = "HELLO"; printf("strlen=%lu\n", mylen(line)); return 0; }
2)strcpy 函数实现
char* mycpy(char* dst, const char* src) { char* ret = dst; while(*src != '\0'){ *dst++ = *src++; } *dst ='\0'; return rest; }
3)可变函数的实现
#include "array.h" Array array_create(int init_size){ Array a; a.array = (int*)malloc(sizeof(int)*int_size); a.size = int_size; return a; }//创建 void array_free(Array *a){ free(a->array)array; a->size = 0; a->array= NULL; }//释放 int array_size(const Array *a){ return a->size; }//返回大小 //封装 int* array_at(Array *a, int index){ return &(a->array[index]); }//访问注意需要返回指针类型 void array_inflate(Array *a, int more_size){ int *p = (int*)malloc(sizeof(int)(a->size + more_size)); int i; for ( i=0; i<a->size; i++){ p[i] = a->array[i]; } free(a->array)array; a->array = p; a->size += more_size; } //增长