简单的C程序<四>:删除空白行、反转字符串、字符串替换

问题一:编写一个程序, 删除每个输入行末尾的空格及制表符,并删除完全是空格的行。

#include <stdio.h>
#include <stdbool.h>
#include <string.h>

#define MAXLINE 1000

int getline(char line[], int len);
bool trim(char s[]);

int main(void)
{
    char line[MAXLINE];
    int len;
    while ( (len=getline(line,MAXLINE)) > 0)
    {
        puts(line);
        trim(line);
        printf("%sEND\n",line);
    }

    return 0;
}

int getline(char line[], int len)
{
    int c,cnt;
    cnt = 0;
    while ( (c=getchar())!=EOF && c!='\n' && cnt<len)
    {
        line[cnt++] = c;
    }
    line[cnt] = '\0';  
    return cnt;
}

bool trim(char s[])
{
    int len = strlen(s);   //strlen返回的是s的长度,不包含结尾处的\0,并不是数组的长度, 
    int i = len -1;
    while ( (i>=0) && (s[i]==' ' || s[i]=='\t'))
    {
        i--;
    }
    s[i+1] = '\0';
    return (i==-1)?false:true;

}

问题二:编写函数reverse(s),将字符串s中的字符顺序颠倒过来。

#include <stdio.h>
#include <string.h>
#define MAXLINE 1000
void reverse(char s[]);

int main(void)
{
    char s[MAXLINE];
    gets(s);
    reverse(s);
    puts(s);
    return 0;
}

void reverse(char s[])
{
    int i,j;
    char tmp;
    for (i=0,j=strlen(s)-1; i<j; ++i,--j)
    {
        tmp = s[i];
        s[i] = s[j];
        s[j] = tmp;
    }
}

你可能感兴趣的:(简单的C程序<四>:删除空白行、反转字符串、字符串替换)