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应该替换为多少个空格
相关文章推荐
- C++ Primer Plus 学习笔记 第四章 02
- 《剑指Offer》学习笔记--面试题4:替换空格
- 算法学习记录二(C++)--->字符串空格替换
- VS2010 C++ MFC框架学习笔记3 - 控件Tab顺序设置及模态对话框
- Sharepoint学习笔记—Ribbon系列-- 7. 在Ribbon中替换指定控件(针对用户自定义Tab)
- Effective C++学习笔记 条款02:尽量以const,enum,inline替换 #define
- 学习笔记-多项式的加减乘数及微分的C++实现15/11/02
- 慕课学习C++笔记02-封装(上)
- c++ 学习笔记(02AM)
- 【C++学习笔记】02_C++开发环境搭建
- C++反汇编学习笔记6——变量在内存中的位置和访问方式
- c++学习笔记02
- C++学习笔记十三 - C++宏替换认识大小写区分
- 慕课学习C++笔记02-封装(下)
- 字符串的输入与停止(如何输入空字符串)(C++ primer 学习笔记)
- C++ Standard Stl -- SGI STL源码学习笔记(02) Concepts Check
- 【C++ 学习笔记小程序02】 简单函数
- C++学习笔记02之三大函数和栈,堆与内存管理
- 【C++学习02】《Essential C++》第二章(Procedural Programming)笔记
- C++个人学习笔记02