📄 stcopy.c
字号:
/* * Copyright (c) 1989, 1990, 1991 by the University of Washington * * For copying and distribution information, please see the file * <copyright.h>. */#include <stdio.h>#include <pmachine.h>char *stcopyr();int string_count = 0;int string_max = 0;/* * stcopy - allocate space for and copy a string * * STCOPY takes a string as an argument, allocates space for * a copy of the string, copies the string to the allocated space, * and returns a pointer to the copy. */char *stcopy(st) char *st; { if (!st) return(NULL); if (string_max < ++string_count) string_max = string_count; return strcpy((char *)malloc(strlen(st) + 1), st); }/* * stcopyr - copy a string allocating space if necessary * * STCOPYR takes a string, S, as an argument, and a pointer to a second * string, R, which is to be replaced by S. If R is long enough to * hold S, S is copied. Otherwise, new space is allocated, and R is * freed. S is then copied to the newly allocated space. If S is * NULL, then R is freed and NULL is returned. * * In any event, STCOPYR returns a pointer to the new copy of S, * or a NULL pointer. */char *stcopyr(s,r) char *s; char *r; { int sl; if(!s && r) { free(r); string_count--; return(NULL); } else if (!s) return(NULL); sl = strlen(s) + 1; if(r) { if ((strlen(r) + 1) < sl) { free(r); r = (char *) malloc(sl); } } else { r = (char *) malloc(sl); string_count++; if(string_max < string_count) string_max = string_count; } return strcpy(r,s); }/* * stfree - free space allocated by stcopy or stalloc * * STFREE takes a string that was returned by stcopy or stalloc * and frees the space that was allocated for the string. */voidstfree(st) char *st; { if(st) { free(st); string_count--; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -