手抄代码1-19

1-19

将输入的行,倒置。函数

#include <stdio.h>
#define MAXLINE 1000//最大行长

int getlin(char line[], int maxline);//输入行返回串长
void reverse(char line[]);//字符串倒置处理

main()
{
    char line[MAXLINE];
    while (getlin(line, MAXLINE)>0) {
        reverse(line);
        printf("%s", line);
    }
}

int getlin(char line[], int maxline)
{
    int c, i;
    for(i=0;(c=getchar())!='\n' && i<maxline;i++)//行是否结束。
    {
        line[i] = c;
    }
    if(c=='\n')
        line[i++] = '\n';
    line[i] = '\0';//字符串。
    return i;
}

void reverse(char line[])
{
    int i, j, c;
    i = j = 0;
    while (line[i] != '\0') {//找到尾
        i++;
    }
    if(line[--i]=='\n')
        i--;
    while (j<i) {//头尾对调
        c = line[j];
        line[j] = line[i];
        line[i] = c;
        i--;
        j++;
    }
}

//拆分合理。实现函数,main组织函数。code

1-20

实现set功能,不对称插入。字符串

#include <stdio.h>
#define TABLNC 8
main()
{
    int c, nb, pos;
    nb = 0;//要打印的空格数。
    pos = 1;//不要打印的空格数
    /*
     程序是这样的,
     把全部行,切成诺干个小块(8个字符),
     在含有tab符小块的地方,缺乏的部分用空格填充。
     如:abcd\t123; 变成abcd , , , ,123;由于abcd占了4个位置。
     */
    while ((c=getchar()) != EOF) {
        if(c == '\t')
        {
            nb = TABLNC-(pos-1)%TABLNC;//运到tab,把行划分红块,8-多出的字符,等于空格数。
            while (nb>0) {//pos-1是技巧。处理了‘\n’;
                putchar(' ');
                pos++;
                nb--;
            }
        }
        else if (c == '\n') {//进入新行,
            putchar(c);
            pos = 1;
        }
        else
        {
             putchar(c);
             pos++;
        }
    }
    printf("%d\n", 0/8);
}

换行是没有占位的。因此要过滤掉。get

相关文章
相关标签/搜索