69,381
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#define N 10 /*一行最大字符数*/
#define TAB 8
char ss[N];
void printl(int pos);
int detab(int pos);
int findblank(int pos);
int newpos(int pos);
int main()
{ int c,pos=0;
while((c=getchar())!=0)
{ ss[pos]=c;
if(c=='\t')
pos=detab(pos);
else if(c=='\n')
{ printl(pos);
pos=0;
}
else if(++pos>=N)
{ pos=findblank(pos);
printl(pos);
pos=newpos(pos);
}
}
return 0;
}
void printl(int pos) /*打印字符函数*/
{ int i;
for(i=0;i<pos;i++)
putchar(ss[i]);
if(pos>0)
putchar('\n');
}
int detab(int pos) /*制表符转换空格符*/
{ ss[pos]=' ';
for(++pos;pos<N && pos%TAB!=0;++pos)
ss[pos]=' ';
if(pos>=N)
{ printl(pos);
pos=0;
}
return pos;
}
int findblank(int pos) /*倒退寻找一个空格*/
{ for(;pos>0 || ss[pos]!=' ';--pos);
if(pos==0)
return N;
else
return pos+1;
}
int newpos(int pos) /*下一行的位置起始*/
{ int j,i=0;
if(pos<=0 || pos>=N)
return 0;
else
for(j=pos;j<N;j++)
ss[i++]=ss[j];
return i;
}
//输入一个小于200的字符串,将该字符串以“_”分割成小于20的字串。请输出原串和子串。
//请注意以下测试用例:
//·输入空串
//·输入长度为9的字符串
//·输入长度为19的字符串
//·输入长度为20的字符串
//·输入长度为38的字符串
//·输入长度为205的字符串
//·理论上还应该考虑输入串中包含_如何处理的逻辑(这个在我的代码中没有体现)
#include <stdio.h>
#include <string.h>
char s[201];
char d[11][21];
int i,L,n;
void main() {
fgets(s,201,stdin);
L=strlen(s);
if ('\n'==s[L-1]) {s[L-1]=0;L--;}
for (i=0;i<L;i++) {
d[i/19][i%19]=s[i];
if (i!=L-1 && 18==(i%19)) {
d[i/19][19]='_';
d[i/19][20]=0;
}
}
d[i/19][i%19]=0;
if (i>0 && 0==(i%19)) {
n=i/19;
} else {
n=i/19+1;
}
printf("s=\"%s\"\n",s);
for (i=0;i<n;i++) {
printf("d[%2d]=\"%s\"\n",i,d[i]);
}
}