又是恶心的字符串处理。。细节各种坑。。
#include<stdio.h>
#define STATUS_WORD 1
#define STATUS_SPACE 2
#define STATUS_BR 4
void printWord(char *s, int total)
{
int i;
for (i = 0; i < total; i++)
putchar(s[i]);
}
void printHr()
{
int n = 80;
while (n--)
putchar('-');
putchar('\n');
}
int main()
{
int c, total = 0, status = STATUS_WORD, length = 0;
char word[80];
while ((c = getchar()) != EOF)
{
if (c == '\t' || c == '\n' || c == ' ')
{
if (status == STATUS_WORD)
{
if (length + total + 1 <= 80)
{
if (length != 0)
putchar(' ');
length += total + 1;
}
else
{
putchar('\n');
length = total;
}
printWord(word, total);
total = 0;
}
status = status == STATUS_BR ? STATUS_BR : STATUS_SPACE;
}
else if (c == '<')
{
if (total != 0)
{
if (length + total + 1 <= 80)
{
if (length != 0)
putchar(' ');
length += total + 1;
}
else
{
putchar('\n');
length = total;
}
printWord(word, total);
total = 0;
}
char one = getchar();
char two = getchar();
getchar();
if (one == 'b' && two == 'r')
putchar('\n');
if (one == 'h' && two == 'r')
{
if (length != 0)
putchar('\n');
printHr();
}
length = 0;
status = STATUS_BR;
}
else
{
word[total++] = c;
status = STATUS_WORD;
}
}
putchar('\n');
return 0;
}