- 论坛徽章:
- 2
|
- #include <stdio.h>
- #include <assert.h>
- unsigned my_strlen(const char *src){
- const char *tmp;
- assert(src != NULL);
- for(tmp = src; *tmp != '\0'; tmp++){
- }
- return tmp - src;
- }
- char *my_strcpy(char *tar, const char *src){
- unsigned len;
- int step;
- char *dst;
- const char *tmp;
- assert(tar != NULL);
- assert(src != NULL);
- if(tar == src){
- return tar;
- }
- len = my_strlen(src);
- dst = tar + len;
- tmp = src + len;
- step = -1;
- if(tar < src || tar > tmp){
- dst = tar;
- tmp = src;
- step = 1;
- }
- for(; (*dst = *tmp) != '\0'; dst += step, tmp += step){
- }
- return tar;
- }
- int main(void){
- int num;
- static char src[] = "This is a test string.";
- char dst[sizeof(src) + 1];
- printf("Please input a number: ");
- scanf("%d", &num);
- if(num < 0){
- printf("%d is a negative %s number\n", num
- , (num & 1) == 1 ? "odd" : "even");
- }else if (num > 0){
- printf("%d is a positive %s number\n", num
- , (num & 1) == 1 ? "odd" : "even");
- }else{
- printf("%d is zero\n", num);
- }
- printf("Source String: %s\n", src);
- printf("Target String: %s\n", my_strcpy(dst, src));
- return 0;
- }
复制代码 |
|