| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2512 人关注过本帖
标题:不用变量实现strlen功能
只看楼主 加入收藏
boot2046
Rank: 2
等 级:新手上路
威 望:3
帖 子:168
专家分:0
注 册:2007-7-23
收藏
 问题点数:0 回复次数:31 
不用变量实现strlen功能
如题,不准用变量,实现strlen功能,看看都有什么好的方法
搜索更多相关主题的帖子: strlen功能 变量 
2007-09-05 10:40
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
收藏
得分:0 
???
什么意思啊

编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-09-05 11:45
devfhpgah
Rank: 1
来 自:江西
等 级:新手上路
帖 子:204
专家分:0
注 册:2007-8-16
收藏
得分:0 
你是意思是不是不用“strlen”这个函数,用别的方法,计算字符的长度?

努力才会成功!
2007-09-05 11:54
boot2046
Rank: 2
等 级:新手上路
威 望:3
帖 子:168
专家分:0
注 册:2007-7-23
收藏
得分:0 
是的,就是写一个自己的strlen函数,计算字符串的长度,要求在函数中不用变量

Linux是简单的,你不需要成为天才也能理解这种简单,Windows是复杂的,就算你是天才也不能理解这种复杂
2007-09-05 12:18
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 

我能想到的方法只有内嵌汇编了,一下程序在BC3.1下编译通过:
#include <stdio.h>

int strlen(const char *p)
{
_asm {
xor ax, ax
push bx
mov bx, p
}

_L:
_asm {
cmp BYTE PTR [bx], 00H;
je _RET;
inc ax;
inc bx;
jmp _L;
}
_RET:
_asm {
pop bx;
}
return _AX;
}


int main()
{
printf("%d\n", strlen("Hello"));
return 0;
}


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2007-09-05 12:22
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
收藏
得分:0 
循环读取字符串,从s[0]开始,遇到s[i]=='\0'就跳出循环,记录循环次数就是字符串长度

编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-09-05 13:13
boot2046
Rank: 2
等 级:新手上路
威 望:3
帖 子:168
专家分:0
注 册:2007-7-23
收藏
得分:0 
那就看怎么不用变量的情况下表示出来咯

Linux是简单的,你不需要成为天才也能理解这种简单,Windows是复杂的,就算你是天才也不能理解这种复杂
2007-09-05 13:26
totohack
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2007-7-15
收藏
得分:0 
可不可用 sizeof()

2007-09-05 20:32
google
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:3419
专家分:23
注 册:2005-11-1
收藏
得分:0 
int MyStrlen(const char *p)
{
if(!*p) return 0;
else 1+MyStrlen(p+1);
}

谁调试一下,好象是对的

祝天下所有母亲幸福安康!~
2007-09-05 20:56
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 

楼上使用递归好方法,不知不觉想到一个不用汇编的方法,而且两句话就可以了,如下:
#include <stdio.h>

int strlen(const char *p)
{
for(_AX = 0; p[_AX] != '\0'; _AX++) ;
return _AX;
}

int main()
{
printf("%d\n", strlen("Hello"));
return 0;
}


顺便问一句,楼上为什么被禁言了?

[此贴子已经被作者于2007-9-5 21:04:09编辑过]


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2007-09-05 21:02
快速回复:不用变量实现strlen功能
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028771 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved