【码蹄集新手村 600 题】针对于字符串的格式化控制,即字符串的宽度与精度

题目链接:



码蹄集 (matiji.net)

解题思路:

针对于非字符的数据我们有 %nd   %m.nf

而对于字符串我们也有其宽度与精度,

  • 即 %m.ns

其中的 m 表示的是宽度,即占几列

n 则取用的是字符串的前面几位

  • 注意:

%m.ns 要与 %m.nf(这里的 n 表示的是精度) 作出区分

易错点:

因为 scanf 函数在输入时遇到空格时,就会自动的停止对于空格之后的数据读取

  • 所以该题目的一个考点:

如何在含有空格的字符串中去读取整行字符串?

可以使用 gets ( ) 函数(该函数只用来读取字符串),

该函数以回车键结束读取,所以遇到空格不会终止输入

  • 但是该函数存在一个缺点:

在接收字符串的输入时,

它不会进行数组下标的检查,

所以如果输入字符长度超过字符数组所能容纳的最大空间,编译时不会出错,

但是运行的时候就会出现数组越界,或者内存泄漏

  • 而为了解决上述问题,

C++ 里有一个 cin.getline ( ) 函数,里面限制了其存放字符串的字符数组的长度 

参考代码:

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    char arr[6] = {'0'};
    /* string 类型不是C语言的内置类型,所以不能用于 printf 函数*/
    //scanf("%6s",arr);遇到空格则停止读入

    gets(arr);
    printf("%6.3s",arr);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值