L1-032 Left-pad之段错误

题目依旧很简单,只有两个小点值得注意:

        (1)当需要读入一行时,需要注意回车符。如本题,前面已经读入一行,直接使用while循环读不进下一行想要得到的数据,而是直接碰到了'\n'回车符号,所以应该在前面加上getchar()先读了回车。

        (2)注意段错误。在C++中,遇到段错误基本上就是访问内存错误,尤其在竞赛题中,着重观察数组越界、名称重复等问题。如本题,最后一个测试发生段错误,就是因为测试数据远超1e4,开1e4存不下,发生数组越界。

代码如下,仅供参考:

#include <bits/stdc++.h>
using namespace std;

int main(){
    int n;
    char c;
    cin>>n>>c;
    getchar();
    char str[100005];
    int k=0;
    while((str[k]=getchar())!='\n'){
        k++;
    }
   // cout<<str;
    int len=k;
    if(len<=n){
        for(int i=1;i<=n-len;i++)cout<<c;
        for(int i=0;i<k;i++)cout<<str[i];
    }
    else {
        //string temp=str.substr(len-n,n); // 错误,str不是string
        for(int i=len-n;i<=len-1;i++)cout<<str[i];
    }
    
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值