工作进度报告怎么写:这段代码输出什么?

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/02 09:52:27
#include < stdio.h >
#include < string.h >

void main()
{
char strSrc[10];
strcpy( strSrc, "hello" );
strSrc[ sizeof( strSrc ) - 1 ] = '\0';
printf("%s",strSrc );
}

是输出“helloXXXX" ("X"代表不确定字符)。
还是输出“hello"。

我的想法是把“hello" COPY 进去了,但没把字符串常量中的'\0'COPY进去。另外strSrc[9] = '\0'; 但strSrc[5],strSrc[6], strSrc[7],strSrc[8],均为不确定字符。所以输出的时候也会输出四个不确定字符。

不知道对不对?
我觉的应该是输出“helloXXXX" ("X"代表不确定字符)。 理由见开始的问题。
但我看好多书上说是输出“hello"。为什么。后面四个不确定字符为什么不输出。而且'\0'是数组的最后一个元素啊。

还有strcpy 不会把常量字符串中的'\0'也COPY过去吧?

输出hello
strcpy不会把常量字符串中的'\0'也COPY过去吧?
-----------应该是这样,内存中的字符串资源都是'\0'结尾的,虽然源代码是没有,但是编译生成的字符串常量肯定是有的,你用debug看一下运行时strSrc的内容不就知道了。

应该你是对的

输出hello,编译器读到字符数组中遇到第一个'\0',就认为一个字符串结束了,因此只输出第一个'\0'之前的内容。

输出hello