思维不严谨,以致pe无数。再次悲剧
部分代码:
//freopen("output.txt","w",stdout);
while(scanf("%s",word)!=EOF){
if(strcmp(word,"<br>") == 0){
line_len=0;
ok=1;
printf("/n");
}
else if(strcmp(word,"<hr>") == 0){
if(ok == 0)
printf("/n");
printf("%s/n",hr);
line_len=0;
ok=1;
}
else{
w_len=strlen(word);
if(!ok){
if((line_len + w_len + 1) < 80){
line_len += w_len+1;
printf(" %s",word);
}
else if((line_len + w_len + 1) == 80){
line_len += w_len+1; //这里不需要打印换行,也不需要把ok标记为1,当它下次接收到word时,会进入>80的判断操作中,若输入结束,也就是不需要换行
printf(" %s",word);
}
else if((line_len + w_len + 1) > 80){
line_len=w_len; //这一步编写错误,原赋值0,其实是换行后重新计数,应把当前word的长度赋给它
printf("/n%s",word);
ok=0;
}
}
else if(ok){
printf("%s",word);
line_len+=w_len;
ok=0;
}
}