回 帖 发 新 帖 刷新版面

主题:[讨论]在线等一个关于char的字符数组的问题。我很费解呀。标题要长要醒目

#include "stdafx.h"
#include "string.h"
#define TEXTLEN 10000
int main(void)
{
    
    char text[TEXTLEN+1];

printf("strlen(text)=%d\n\n\n\n",strlen(text));


return 0;
}



我还没有往里面写数据呢,结果应该是0,为什么结果是10007

在线急等。[em16]

回复列表 (共9个回复)

沙发

这么等还不如百度、
strlen从首地址的字符开始索引,到第一个'\0'结束。没初始化就这么用?

板凳

[quote]这么等还不如百度、
strlen从首地址的字符开始索引,到第一个'\0'结束。没初始化就这么用?[/quote]

我是看的Ivor Horton的《Beginning C From Novice To Professional》书得,因为听人介绍说这本书比较好,所以用这本书入门。上面的一个程序就是这样用的。

现在这个在VC里肯定不正确,我想问下为什么结果会是10007?

3 楼

这个结果肯定是未知的,在C-Free中的结果是0.

4 楼


楼主对text没有初始化,显示的肯定不对了,
在就是没有必要给主函数弄返回值没用

#include<stdio.h>
#include "string.h"
#define TEXTLEN 10000
int main(void)
{
    
    char text[TEXTLEN+1]="I am a student";
    
    printf("strlen(text)=%d\n\n\n\n",strlen(text));
    
    
    return 0;
}

5 楼

其实例子是对的,而你的结果之所以出错是因为
你没有用Release模式编译运行程序。

6 楼

一般情況下,編譯器為了效率,棧數據是不會自動初始化的。
所以局部變量一定要自行負責初始化操作!
你的程序不崩潰已經是很給你面子了。

7 楼

[quote]
楼主对text没有初始化,显示的肯定不对了,
在就是没有必要给主函数弄返回值没用

#include<stdio.h>
#include "string.h"
#define TEXTLEN 10000
int main(void)
{
    
    char text[TEXTLEN+1]="I am a student";
    
    printf("strlen(text)=%d\n\n\n\n",strlen(text));
    
    
    return 0;
}
[/quote]

饿,我用的VC,选了helloworld模式
一出来就有这个返回值

8 楼

[quote]其实例子是对的,而你的结果之所以出错是因为
你没有用Release模式编译运行程序。[/quote]
请问怎么用
Release模式编译运行程序

9 楼

找到显示有“Debug”的地方,把它换成“Release”。

我来回复

您尚未登录,请登录后再回复。点此登录或注册