0

文字列が配列に格納される順序を逆にして、最後の文字列が新しい配列の最初になるようにします。これまでのところ、データを取得して最初の配列に格納していますが、そこで立ち往生しています。文字列自体ではなく、文字列の順序を逆にしたいだけです。

入力例:

here is a sample
line two of test

出力:

line two of test
here is a sample

これまでのところ、入力を最初の配列に格納します。

// Accept user input until hit EOF.
while (( c = getc(stdin) ) != EOF) {
    if(input != NULL) {
        int c = EOF;
        int i = 0;

        // Accept user input until hit EOF.
        while (( c = getc(stdin) ) != EOF) {
            input[i++] = (char)c;
            input[i++] = (char)c;

            // If reached maximize size, realloc size.
            if (c == '\n') {
                input[i]='\0';
            }

            if (i == current_size) {
                current_size = i + len_max;
                input = realloc(input, current_size);
            }
        }

        input[i] = '\0';
    }
4

2 に答える 2

1

char *の配列があり、配列の長さがわかっていると仮定します。

配列をループし、 position の要素を position の要素と交換しますin - i - 1ここnで、 は配列の長さです。

n= 10 の場合、次のようになります。

i = 0, n - i - 1 = 9
i = 1, n - i - 1 = 8
i = 2, n - i - 1 = 7
i = 3, n - i - 1 = 6
i = 4, n - i - 1 = 5

に到達したら、ループを停止することを忘れないでくださいn / 2

于 2012-12-03T22:38:53.763 に答える
0

リンクリストに保存してみてください。順序を逆にする方が簡単で良い方法です。

于 2012-12-04T04:28:09.330 に答える