1. 程式人生 > >C++中利用gets()輸入字串時改變初始字元的下標

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