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

    xiaoxiao2021-08-27  87

    复习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++)

    转载请注明原文地址: https://ju.6miu.com/read-677251.html

    最新回复(0)