简单的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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值