反向字符串列表顺序

时间:2012-12-03 22:24:25

标签: c string

我想颠倒字符串存储在数组中的顺序,以便最后一个在新数组中成为第一个。到目前为止,我正在获取数据并存储在第一个数组中,但我被困在那里。我只想反转字符串顺序,而不是字符串本身。

示例输入:

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';
    }

2 个答案:

答案 0 :(得分:1)

假设您有一个char *数组并且您知道数组的长度:

在数组上循环,并将位置i处的元素与位置n - 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时停止循环播放。

答案 1 :(得分:0)

尝试存储在链接列表中。这将是改变订单的更好,更简单的方法。