标题:用strlen计算字符串长度结果不对[问题已解决]
取消只看楼主
yuezhuying
Rank: 2
等 级:论坛游民
帖 子:115
专家分:10
注 册:2008-9-13
结帖率:100%
 问题点数:0 回复次数:4 
用strlen计算字符串长度结果不对[问题已解决]
程序代码:
/* 计算字符串长度*/
#include <stdio.h>

int strlen(char *str)
{
    int i;

    for( i = 0; str[i] != '\0'; i ++ )    /* 用循环计算长度 */
    return i;
}

int main(void)
{
    char string[100];        /* 字符串数组声明 */
    int len;                /* 字符串长度 */

    printf("请输入字符串==>");
    gets(string);            /* 读取字符串 */
    len = strlen(string);    /* 计算字符串长度 */
    printf("输入字符串的长度是%d\n", len);
}

编译成功,但运行后无论输入什么字符串,计算结果都为0。请问代码哪里不对?
这代码是在《数据结构C语言-铁道出版社》电子书里看到的。

原因:在strlen函数中的for语句后面少了个分号。

[[it] 本帖最后由 yuezhuying 于 2008-11-21 20:55 编辑 [/it]]
搜索更多相关主题的帖子: strlen 字符 长度 结果 
2008-11-21 20:08
yuezhuying
Rank: 2
等 级:论坛游民
帖 子:115
专家分:10
注 册:2008-9-13
得分:0 
原来如此~我平常在写代码时都不会给for后面加上分号,忘了还有这种情况,难怪我无论怎么看代码都找不到这错误~~
谢谢极光的指点~~
2008-11-21 20:27
yuezhuying
Rank: 2
等 级:论坛游民
帖 子:115
专家分:10
注 册:2008-9-13
得分:0 
刚刚去翻了一下C语言的书,找了一下strlen函数,照书上说的改了一下代码,也可以运行。就是加上头文件和去掉自定义的strlen函数。
程序代码:
#include <stdio.h>
#include <string.h>

int main(void)
{
    char string[100];        /* 字符串数组声明 */
    int len;                /* 字符串长度 */

    printf("请输入字符串==>");
    gets(string);            /* 读取字符串 */
    len = strlen(string);    /* 计算字符串长度 */
    printf("输入字符串的长度是%d\n", len);
}


那个for语句,我以为return i;是它的语句。
现在明白了,是自己理解错了。谢谢007的指点。
2008-11-21 20:49
yuezhuying
Rank: 2
等 级:论坛游民
帖 子:115
专家分:10
注 册:2008-9-13
得分:0 
谢谢LS, 又学了一招,再次明白for和while可以互相替换的用,不过指针方面就头疼了~~
2008-11-21 22:42
yuezhuying
Rank: 2
等 级:论坛游民
帖 子:115
专家分:10
注 册:2008-9-13
得分:0 
我现在正在学C,C++也只看了一点,看的是《易学C++》这本书,对C++知道的不多。
你说的四个设计模式,是指哪些??我买了一本书《大话设计模式》,不知里面有没有你说的设计模式,可惜这本书是用C#来描述的。我不懂C#,不过感觉上可以当C++来看~~我指的不是代码,而是代码表达的意思。
2008-11-22 18:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-245638-1-1.html




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

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