将输入的行,倒置。函数
#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
实现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