C++中利用gets()输入字符串时改变初始字符的下标

复习PAT的时候,看到求最长公共子序列的代码,其中有这么几行代码:

char A[N];

gets(A+1);//从下标为1开始读入

int lenA=strlen(A+1);//由于读下标从1开始,因此读取长度也从+1开始

这样,当要遍历A中所有字符的时候,需要写以下代码:

for(int i=1;i<lenA+1;i++){

A[i]

}

重新测试了一些案例,发现有以下规律:

char A[N];

int a,b;//a,b可为任何int型整数,包括负数

gets(A+a);//A的第一个字符下标为a;

int lenA=strlen(A+b);//如果b>=a,那么lenA的数值就等于字符串A的真实长度减去(b-a),这说明lenA的数值是从A+b这个指针位置往后读取的字符个数,而A的第一个字符的指针是A+a;如果b<a,那么lenA的数值为0。

这时候,要想遍历A中所有字符,应该这么写:

for(int i=a;i<a+字符串真实长度;i++){

A[i];

}

如果b>=a,应该写成:

for(int i=a;i<a+lenA+b-a;i++)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值