如果我输入一个标签,则间距是正确的,那么当我在文本之间输入连续的标签时,为什么它会给出较少的空格?
/**********************************************************
* Replaces TABs with an appropriate number of spaces *
* *
**********************************************************/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int ch;
int i=0;
while((ch=getchar()) !=EOF)
{
if(ch=='\t')
{
for(i=0;i<4;i++)
putchar(' ');
}
else
putchar(ch);
}
return 0;
}
![enter image description here](https://i.stack.imgur.com/hyA10.jpg)
答案 0 :(得分:0)
你的程序运行正常。
最有可能(就像在我的系统上一样),选项卡在控制台上的表示大于4个空格(在我的标签上,标签大8个空格)。在这种情况下,您的输出可能看起来比输入短:
-> leading tab, as large as 8 spaces
....converted to four spaces
当然,这不会总是适用,因为标签有固定的位置(第一行显示标签将放置后续字符的位置):
********++++++++********+++++++
hello-> world
hello....world (not shortened this time)
********++++++++********+++++++
hello-> -> world (consecutive tabs again)
hello........world
答案 1 :(得分:0)
如果使用空格扩展到下一个制表位,那就更好了。
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int ch;
int i=0,col=0;
while((ch=getchar()) !=EOF) {
if(ch=='\t') {
for(i=0;i<4;i++) {
putchar(' ');
col++;
if((col%4)==0) break;
}
}
else {
putchar(ch);
if(ch=='\n' || ch=='\r') col=0;
else col++;
}
}
return 0;
}