字符串长度与宏的两个题目。

在CSDN论坛上看到的,很多人都在讨论。我也不知道标准答案是什么。

原题是:

1.不用局部变量和全局变量实现strlen;
2.有2数据,写一个交换数据的宏;(注意要考虑到浮点数和溢出的情况)


1 这一题大部分人都倾向于用递归来做,但有人给出了如下答案,我感觉更好:

#include <stdio.h>
int mstrlen(char *p)
{
    return ToEnd(p) - p;
}
char * ToEnd(char * p)
{
    while(*p != '\0')
        p++;
    return p;

将两个返回值相减即能得到答案


2 这个题目提供的答案有很多种,感觉用memcpy比较靠谱。下面是一个强人提供的答案

#define SWAP(a, b)\

{\

int size = sizeof(a);\

char* temp = (char*)malloc(size);\

 memcpy(temp, &a, size);\ 

 memcpy(&a, &b, size);\

 memcpy(&b, temp, size);\

 free(temp);\



希望大家多多提出更好想法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值