c primer plus 第十一章学习小结

本文介绍了C语言中的字符串处理函数,包括getchar(), putchar(), gets(), puts(), fgets(), fputs()等。详细解释了这些函数的工作原理及其应用场景,如缓冲区的概念、如何避免字符串溢出等问题。

第十一章 字符串以及字符串函数

1.getchar(), putchar(), gets() , puts() , fgets() , fputs():

   在输入中,有一个概念叫做缓冲输入,即输入的内容会暂时存储在一个叫做缓冲区的地方--行缓冲就是在按按下换行键之后,缓冲区的内屏就会被释放。

   getchar()是在缓冲区域内读取一个字符,注意这个取字用的很好,去过之后这个字符就不存在与缓冲区了。

   putchar()则是输出读取的字符。

   gets()是字符串读取函数,比较特殊的是其读取是不管字符串是否溢出所存在的数组,且会丢弃换行符; 针对此,特地引进了fgets()函数,可以实现规定读取的字符串大小,必须带有一个叫做stdin的参数。与之相对应的输出函数是puts()---此函数会引进一个换行符,而fputs()则不会额外引进换行符,会忠实地反应读取的内容。在c primer plus 中的编程练习11.9中 , while(getchar != '\n'  continue;的操作具有教育意义。

### C Primer Plus 第十一章解析 #### 关于类的定义和对象创建 在`main.cpp`文件中展示了如何定义并使用自定义类的对象。这里展示了一个名为`Cow`的类,其构造函数接受三个参数用于初始化对象属性[^1]。 ```cpp #include<iostream> #include "cow.h" int main(){ Cow c1("xiao", "eating", 100); c1.show(); Cow c2 = c1; c2.show(); Cow c3; c3 = c2; c3.show(); return 0; } ``` 这段代码首先包含了必要的头文件,并在一个名为`main()`的函数内实例化了多个`Cow`类型的对象。这些操作包括直接初始化(`c1`)、拷贝构造(`c2`)以及赋值运算(`c3`)。每次调用成员方法`show()`来打印当前对象的信息到控制台。 #### 字符串处理中的动态内存管理 对于字符串的操作涉及到动态分配足够的空间以存储新的字符序列。具体过程如下: - 使用标准库函数`strlen()`计算源字符串的实际长度; - 利用`new[]`操作符申请适当大小的新缓冲区,考虑到终止零字节所以加一; - 应用`strncpy()`安全地完成从旧位置向新地址的数据迁移工作[^2]。 此部分强调了C++编程实践中关于手动管理和释放资源的重要性,尤其是在涉及可变长数据结构的情况下。 #### 科学记数法格式化输出 当需要按照特定格式输出浮点数值时,在C语言里可以借助printf族函数及其丰富的格式选项。例如想要让结果呈现为带有两位小数精度且总宽度固定为十二位宽(含符号)、左侧填充空白区域,则应采用如下形式的格式描述子[^3]: ```c printf("%-12.2E\n", value); ``` 上述表达式会确保最终显示出来的数字遵循指定样式——即左对齐、保留至多两个有效位之后跟随大写的'E'作为指数分隔符。 #### 整型常量表示方式的选择 针对整数尤其是那些具有特殊基数(如8或16)的情况,默认情况下编译器可能会将其解释成有符号类型(int),这可能不是预期行为特别是在某些边界条件下可能导致意外的结果。因此建议显式声明无符号版本(unsigned int), 特别是在处理较大范围内的正整数值或是执行按位逻辑运算的时候[^4]. 此外, 如果希望输出带前缀的形式 (比如 `0x` 或者 `0o`) 来明确指出该数值的确切进制, 可以利用相应的格式说明符 `%#X` 和 `%#O`, 同样要注意区分大小写字母的影响.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值