《C程序设计语言》1-19
#include <stdio.h>
#include <stdlib.h>
#define MAXLINE 1000
/*
将字符串S中的字符顺序颠倒过来。
使用该函数编写一个程序,每次颠倒一个输入行中的字符顺序。
*/
void reverse(char str[], int len);
int getline(char str[], int maxline);
int main()
{
int len = 0;
char str[MAXLINE];
while((len = getline(str, MAXLINE)) > 0){
reverse(str, len);
printf("%s\n", str);
}
printf("Hello world!\n");
return 0;
}
//输入文本行
int getline(char str[], int maxline)
{
int len = 0;
char c;
while(len < maxline-2 && (c = getchar()) != '\n' && c != EOF)
{
str[len++] = c;
}
if(c == '\n'){
str[len] = c;
len++;
}
if(len == maxline-2)
{
str[len] = '\n';
len++;
}
str[len] = '\0';
return len;
}
//颠倒字符串中的字符顺序
void reverse(char str[], int len)
{
int i;
char c;
for(i = 0; i <= len-2-i; i++){
c = str[i];
str[i] = str[len-2-i];
str[len-2-i] = c;
}
}
我写的reverse()函数太依赖getline()函数了,像课本上的答案那样,先将下标确定在'\n'前面,我认为那样会更好。