| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1683 人关注过本帖
标题:char A[200],然后初始化,为何strlen(A)等于203?
取消只看楼主 加入收藏
crazycoder
Rank: 1
来 自:长春
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-11-20
收藏
 问题点数:0 回复次数:2 
char A[200],然后初始化,为何strlen(A)等于203?
#include <stdio.h>
#include <string.h>
void main()
{
    char * p = new char[10];
    printf("%d",strlen(p));
    delete [] p;
}
//输出结果为105,我把char[100]改为char[10]时,输出则是14,为什么?
//对strlen()了解的真是一知半解,谁能指点我一下?谢了。

///////////////////////////////////////////////////////////////////
现把程序改为:
#include <iostream>
#include <string>
using namespace std;
const int size = 350;
int main()
{
    char A[size];
    for(int i = 0; i < size; i++)
    {
        A[i] = 's';
    }
    cout << strlen(A) << endl;
    cout << sizeof(A) << endl;
         return 0;
}
我的电脑上输出结果是355    350
然后我再把char A[350];改为char A[200];输出结果变为203   200
strlen()和sizeof()应该只差一个\0的长度吧?  所以我还是没弄明白。

[[it] 本帖最后由 crazycoder 于 2008-11-26 21:10 编辑 [/it]]
搜索更多相关主题的帖子: strlen 
2008-11-26 14:54
crazycoder
Rank: 1
来 自:长春
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-11-20
收藏
得分:0 
现把程序改为:
#include <iostream>
#include <string>
using namespace std;
const int size = 350;
int main()
{
    char A[size];
    for(int i = 0; i < size; i++)
    {
        A[i] = 's';
    }
    cout << strlen(A) << endl;
    cout << sizeof(A) << endl;
         return 0;
}

我的电脑上输出结果是355    350
然后我再把char A[350];改为char A[200];输出结果变为203   200
strlen()和sizeof()应该只差一个\0的长度吧?  所以我还是没弄明白。

[[it] 本帖最后由 crazycoder 于 2008-11-26 21:11 编辑 [/it]]

Breath deeply, three times a day, hold on for one year----我要说的是:坚持真的是件很难的事。
2008-11-26 16:58
crazycoder
Rank: 1
来 自:长春
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-11-20
收藏
得分:0 
多谢8楼,现在把程序改成这样:
#include <iostream>
#include <string>
using namespace std;
const int size = 200;
int main()
{
    char A[size+1];
    for(int i = 0; i < size; i++)
    {
        A[i] = 's';
    }
    A[size] = '\0';
    cout << strlen(A) << endl;
    cout << sizeof(A) << endl;
         return 0;
}
输出就跟预期一样了,为200   201

Breath deeply, three times a day, hold on for one year----我要说的是:坚持真的是件很难的事。
2008-11-26 21:18
快速回复:char A[200],然后初始化,为何strlen(A)等于203?
数据加载中...
 
   



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

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