我想颠倒字符串存储在数组中的顺序,以便最后一个在新数组中成为第一个。到目前为止,我正在获取数据并存储在第一个数组中,但我被困在那里。我只想反转字符串顺序,而不是字符串本身。
示例输入:
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';
}
答案 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)
尝试存储在链接列表中。这将是改变订单的更好,更简单的方法。