我自己的分析:用getchar()循环的读入单个字符,第一次执行getchar()时候,我输入12345,按下enter键,这时候,标准输入流中包括换行符共有六个字符。
接下来,执行循环,每次getchar()自动的从当前流中读取一个字符,每当读取一个字符执行一次循环,直到循环结束。
这时形成了一个以str为首地址的字符串,这时候当前流的状态是'4''5''\n'。
在用cout输出的时候,它是怎么判断字符串什么时候,结束的。用strlen(str)输出长度为3,strlen()函数是以'\0'作为字符串结束标志判断字符串长度的。
我的想法哪有错吗?希望大家指正。
我想知道这个空字符到底哪儿来的????
如下:
#include <iostream>
#include <cstdio>
#include<cstring>
using namespace std;
int main()
{
char *str=new char[3];
int i=0;
while(i!=3)
{
str[i]=getchar( );
++i;
}
cout<<str<<endl;
cout<<strlen(str)<<endl;
return 0;
}