2271:HTML
keyword
概要
改行タグと水平線タグを含んだhtmlのコードが与えられる。1行80字以下になるように出力する問題。
実装ゲー。トークンの分割とかは相変わらず苦手。stream使えば楽なんだろうけど。
char token[90]; char line[90]; int main(){ int n, p=0, i; while(scanf("%s",token) != EOF){ if(token[0] == '\n' || token[0] == '\r'){ continue; } n = strlen(token); if(!strcmp(token,"<br>")){ if(p){ line[p] = '\0'; printf("%s",line); p = 0; } putchar('\r'); putchar('\n'); } else if(!strcmp(token,"<hr>")){ if(p){ line[p] = '\0'; printf("%s\r\n",line); p = 0; } REP(i,80){ putchar('-'); } putchar('\r'); putchar('\n'); } else{ if(p + n + (p?1:0) > 80){ line[p] = '\0'; printf("%s\r\n",line); REP(p,n) line[p] = token[p]; } else{ if(p) line[p++] = ' '; REP(i,n){ line[p++] = token[i]; } } } } if(p){ line[p] = '\0'; printf("%s",line); p = 0; } printf("\r\n"); return 0; }