/* 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 MAXLINE 1000 /* maximum input line size */ int getline(char line[], int maxline); int reverse(char s[]); /* reverse input lines, a line at a time */ main() { char line[MAXLINE]; /* current input line */ while((getline(line, MAXLINE)) > 0) { reverse(line); printf("%s", line); } } /* getline: read a line into s, return length */ int getline(char s[], int lim) { int c, i, j; j = 0; for(i = 0; (c = getchar()) != EOF && c != '\n'; ++i) { if(i < lim - 2) { s[j] = c; /* line still in boundaries */ ++j; } } if(c == '\n') { s[j] = c; ++j; ++i; } s[j] = '\0'; return i; } /* reverse: reverse string s */ void reverse(char s[]) { int i, j; char temp; i = 0; while(s[i] != '\0') /* find the end of string s */ { ++i; } --i; /* back off from '\0' */ if(s[i] == '\n') { --i; /* leave newline in place */ } j = 0; /* beginning of new string s */ while(j < i) { temp = s[j]; s[j] = s[i]; /* swap the characters */ s[i] = temp; --i; ++j; } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-12-11 18:05:49