天天看點

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

繼續閱讀