Page 31

Write a function reverse(s) that reverses the character string s. Use it to write a program that reverses its input a line at a time.

#include <stdio.h>

#define LIMIT 1000

void reverse(char in[], char out[], int len);
int get_line(char s[], int lim);

int main()
{
	int len;
	char str[LIMIT];
	char rev[LIMIT];

	while ((len = get_line(str, LIMIT)) > 0) {
		reverse(str, rev, len);
		printf("%s\n", rev);
	}
}

int get_line(char s[], int lim)
{
	int c, i;

	for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i) {
		s[i] = c;
	}

	s[i] = '\0';
	return i;
}

void reverse(char in[], char out[], int len)
{
	for (int i = 0; i < len; i++) {
		out[i] = in[len - i - 1];
	}
	out[len] = '\0';
}