《2017年10月28日》【连续018天总结】
标题:继续学习字符串
内容:A.观看MOOC7.2;
B.下列都是将字符串输入数组:
(a).用一维数组存放字符串:包含'\0',其中'\0'前的字符就是存放的字符串;
用char存放字符串,数组元素个数至少为字符串长度+1;
当用cin,scanf将字符串读入字符数组时,会自动在字符串末尾加'\0';
(b).1.用scanf读入字符串到数组,scanf会读到0为止;
如:char line[100];
scanf("%s",line);//注意,不是&line,&表示取地址,而数组名就是地址;
printf("%s",line);
输入fox river;输出fox;
2.当数组长度不足时,会发生数组越界;scanf,cin都会造成这种情况;
3.cin.getline(char buf[ ],int bufsize);读入一行(行长度不超过bufsize-1)或bufsize-1个字符到数组,并自动添加'\0',回车换行符不会写入数组,并且会从输入流中去掉;(可读入空格)
如: char line[10];
cin.getline(line,sizeof(line));
cout<<line;
输入a b c;输出a b c;
(不会导致数组越界)
4.gets(char buf[ ]);读入一行,末尾添'\0';会导致数组越界;回车换行符不会写入数组,并且会从输入流中去掉;
如: char line[10];
while(gets(line)){//当line成功读入时,gets(line)非0
printf("%s\n",line);
}
明日计划:继续学习字符串;