您的位置:首页 > 编程语言 > C语言/C++

C/C++ 学习笔记[02].替换Tab为空格,并在TabStop的位置停止

2010-05-19 15:28 381 查看
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BUFFER   1024
#define SPACE        ' '
#define TAB          '/t'
int getline(int s[], int lim)
{
int c, i;
for(i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '/n'; ++i)
s[i] = c;
if(c == '/n')
{
s[i] = c;
++i;
}
s[i] = '/0';
return i;
}
int calTabNumber(int pos, int tabSize) {
return tabSize - (pos % tabSize);
}
int main(void)
{
int buffer[MAX_BUFFER];
int tabSize = 4;
int i, l, j, k;
while (getline(buffer, MAX_BUFFER) > 0) {
for (i = 0, l = 0; buffer[i] != '/0'; i++) {
if (buffer[i] == TAB) {
j = calTabNumber(l, tabSize);
for (k = 0; k < j; k++) {
putchar(SPACE);
l++;
}

} else {
putchar(buffer[i]);
l++;
}
}
}

return 0;
}


The C Programming Language例子程序中用buffer的下标+1作为calTabNumber的第一个参数,但觉得不符合我的要求

所以改成输出的字符个数做第一个参数,计算tab应该替换为多少个空格
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: