練習1-20 編寫程式detab:將輸入的製表符替換成適當數目的空格,使空格充滿到下一個製表符終止位的地方
《C語言程式設計》練習1-20 編寫程式detab
疑惑:主要是搞清楚製表符終止位是什麼意思。
題意理解:製表符終止位可以看成是Excel單元格之間的豎線。這道題可以理解為:從鍵盤依次輸入字元序列,往Excel單元格中填(自己想象),一個單元格的寬度為N(也就是可容納的字元個數),當在填充單元格時輸入了製表符(也就是按下tab鍵時)就跳到下一個單元格的開頭填,如果上一個單元格沒有填滿,則需要用空格將其填滿;如果填滿了單元格時都沒有遇到製表符則自動跳到下一個單元格,從頭開始填充。這裡就是要求用空格來填充滿單元格剩下的空間, 來達在填寫Excel表格中到按下tab鍵時的效果。
例如:
假設單元格寬度為6,如果輸入了 ‘abc’三個字元後,輸入製表符(\t),那麼就要用3個空格將其填滿;
如果輸入了‘a’後輸入製表符,則需要輸入5個空格填滿。
一種特殊情況,如果在開頭就輸入製表符,則需要6個空格將其填滿。
所以關鍵是判斷在當前單元格已輸入了幾個字元,用單元格寬度減去即可得到輸入填充的空格數。
程式碼如下:
/* P25 練習1-20 ,編寫程式detab:將輸入的製表符替換成適當數目的空格,使空格充滿到下一個製表符終止位的地方。
製表符終止位可以看成是Excel每2個單元格之間的豎線。
這道題的可以理解為:從鍵盤輸入字元,往Excel單元格中填,一個單元格寬度為N,當在填充單元格輸入製表符(也就是按下tab鍵時)
就跳到下一個單元格開始填,如果填滿了單元格都沒有遇到製表符則自動跳到下一個單元格,開始填充。這裡就是要求用空格來填充滿單元格剩下的空間
來達到按下tab鍵時的效果。
*/
#include <stdio.h>
#define N 6 /* 每隔N列出現一個製表符終止位 */
void space_replace_table(){
int c,cursor_pos,fill_num;
cursor_pos = 1; /* 當前游標在單元格中處於第幾列 */
fill_num = 0; /* 要填充的空格數 */
while( (c=getchar()) != EOF){
if(c == '\t'){
if( cursor_pos > N)
cursor_pos %= N;
fill_num = N - cursor_pos + 1; /* 要填充的空格數 */
if( fill_num > N)
{
printf("Error: fill_num = %d more than N\n", fill_num);
}
while(fill_num > 0){
putchar(' ');
fill_num--;
}
putchar('|'); /* 在每一個單元格後面輸出一條豎線 */
cursor_pos = 1; /* 跳到下一個單元格開頭 */
}else if(c == '\n'){
putchar('\n');
cursor_pos = 1;
}
else{
putchar(c);
cursor_pos++;
if( cursor_pos % N == 1)
putchar('|');
}
}
}
void main(){
space_replace_table();
}
效果如下:
相關文章
- shell去掉echo和cat 的行前空格或製表符
- linux 中 grep匹配 區分空格和製表符Linux
- C練習--刪除每個輸入行末尾空格及製表符,並刪除完全是空的行
- excel表裡分隔符替換為製表符的操作方法Excel
- grep 匹配製表符 和 換行符
- 替換空格
- javascript將字串中的多個空格替換為一個空格的正則例項JavaScript字串
- js替換字串裡的空格JS字串
- SQLServer中Tab製表符的影響SQLServer
- Python-按空格分割,多個空格當一個空格Python
- Problem 4:替換空格(字串)字串
- 【編測編學】零基礎學python_03_字串(拼接+換行+製表符)Python字串
- HTML如何輸入多個空格HTML
- Visual Studio Code 程式碼顯示空格等空白符的方法
- 替換字串中的空格《演算法很美》字串演算法
- 【劍指offer】2.替換空格
- 正則替換 修改字元 去除空格字元
- offer通過--4替換空格-2
- 劍指offer-替換空格02
- 適當的方式模仿UITextField佔位符的顏色UI
- 編譯器的符號表管理編譯符號
- JavaScript將字串中的多個空格縮減為一個空格JavaScript字串
- [20181019]vim小技巧刪除製表符.txt
- Vue 銀行卡號只輸入數字 並4位補一個空格Vue
- [每日一題] 第十題:替換空格每日一題
- LeetCode 劍指 Offer 05. 替換空格LeetCode
- pycharm 取消空格,逗號 等符號的自動補全PyCharm符號
- vue 輸入框輸入4位一空格,控制16位有效字元Vue字元
- Linux——程式建立、程式終止、程式等待、程式程式替換Linux
- [20200224]vim小技巧刪除製表符2.txt
- C語言中水平製表符 與退格鍵 的使用方法探索C語言
- Pycharm複製程式碼時括弧前出現空格PyCharm
- equals中關於空格需要注意的地方
- vue輸入的時候全是空格校驗方法Vue
- GNU Guix 將終止對 Linux 核心的支援,全面替換為 GNU HurdGUILinux
- 皕傑報表單元格空格
- Linux中EOF自定義終止符介紹Linux
- 如何將Windows的桌面替換成自己的程式Windows