-1

これが機能しないのはなぜですか?

short pStringCt = 0;
const char* constInBuf = ibuf;
int j;
for (j = 0; j < i; j++)
{
    /*Detect when there's a space in the buffer and grab word*/
    if (ibuf[j] == ' ' ||
        ibuf[j] == '|' ||
        j == i - 1)
        {
            int k;
            for (k = j - 1; k >= 0; k--){

                if (k == 0 || ibuf[k] == ' ' || ibuf[k] == '|')
                {
                    if (pStringCt > 0){
                        pString[pStringCt] = strndup(constInBuf + k + 1, j - k + 1);
                        printf("-pString at %d is: %s\n", pStringCt, pString[pStringCt]);
                        pStringCt += 1;
                    }
                    if (pStringCt == 0){
                        pString[pStringCt] = strndup(constInBuf+k, j-k + 1);
                        printf("-----pString at %d is: %s\n", pStringCt, pString[pStringCt]);
                        pStringCt+=1;
                    }
                    printf("%d is pStringCt\n", pStringCt);
                    break;
                }
            }
        }

break ステートメントの後、pStringCt の値が増加していません。つまり、pStringCt は、メソッドの開始時点では 0 です。次に、それに関連する 2 つの if ステートメントの後に 1 つに増加します。しかし、breakステートメントの後、ゼロにリセットされます...

4

1 に答える 1

1

そのため、scanf を使用して文字列を取得していましたが、文字列を取得するメソッドを 2 回繰り返したため、メソッドの戻り値が台無しになりました。すべてのコードを貼り付けなくて申し訳ありませんが、自分の質問に答えただけです...申し訳ありません...

PS 今 getline() を使用しています。魅力のように機能します。

于 2012-09-21T04:12:25.750 に答える