018day(继续学习字符串)

来源:互联网 发布:ac68u 网络设置 编辑:程序博客网 时间:2024/06/06 15:41

172210704111-陈国佳总结《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);
}


明日计划:继续学习字符串;