我应该在这个程序中做什么。我无法理解。
问题是:编写一个程序 detab,用正确的数字替换输入中的制表符
空格到下一个制表位的空间。假设有一组固定的制表位,例如每 n 列。
n 应该是变量还是符号参数?
我首先将制表符('\t')替换为空格('')。
但我想这是错误的做法。
请建议?
顺便说一句,n 应该是什么?变量或符号参数?
到目前为止的代码:
#include<stdio.h>
#define TAB 5
int main() {
int i, c;
while((c = getchar()) != EOF) {
if(c == '\t') {
for(i = 0; i < TAB; ++i)
putchar(' ');
} else
putchar(c);
}
return 0;
}
在本练习中发布的所有问题中,我无法理解其含义。
这是我的最终代码,请告诉我是否有任何问题/错误。我认为它应该正常工作。
感谢@Nit、@Chrono Kitsune、@dasblinkenlight 以及所有其他提供帮助的人。
#include<stdio.h>
#define TAB 8
int main() {
int c, count = 0, space = 0;
while((c = getchar()) != EOF) {
if(c == '\t') {
space = (TAB - (count % TAB));
while(space > 0){
putchar(' ');
count++;
space--;
}
}
else{
putchar(c);
++count;
}
if(c == '\n')
count = 0;
}
return 0;
}
您所做的并不是练习希望您做的:您不应该为每个选项卡插入固定数量的空格,而应该根据到目前为止已在该行上打印的数量插入不同数量的空格。
如何获取每个制表符的空格数并不重要 - 将其设为预处理器常量的方式非常好。然而,与其生产TAB
空格,无论在哪里'\t'
已经找到,您的程序需要计算已打印了多少“常规”字符,并在看到时计算需要多少个空格'\t'
.
做一个变量count
对于到目前为止打印的字符。将其初始化为零,然后每次看到'\n'
特点。你打电话时putchar
, 还使count++
.
现在当你看到一个选项卡时'\t'
计算距离下一个制表位有多远。其表达方式为
TAB - (count % TAB)
这就是您需要打印的空格数。
这应该足以让您返回并修复程序 - 我认为您只需要编写另外五行代码(不计算需要插入的大括号行)即可完成此练习。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)