練習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();
}
效果如下:
相關文章
- 替換空格 將一個字串中的空格替換成“ ”字串
- 替換SQL欄位中的換行符,回車符,空格等特殊符號SQL符號
- shell去掉echo和cat 的行前空格或製表符
- excel表裡分隔符替換為製表符的操作方法Excel
- linux 中 grep匹配 區分空格和製表符Linux
- 如何在ultraedit刪除空行(含空格,tab,製表符等怪字元)字元
- sqlserver查詢一張表所有欄位是否含製表符、換行符、回車符SQLServer
- oracle中去掉文字中的換行符、回車符、製表符Oracle
- SQL —— 時刻提防一些髒資料 [ 回車, 換行, 空格, Tab鍵形成的製表符 ]SQL
- CHARINDEX、表中有製表符、換行符、回車符的查詢和取消掉的方法Index
- linux下的製表符和換行Linux
- oracle中去掉文字中的換行符、回車符、製表符小結Oracle
- javascript將字串中的多個空格替換為一個空格的正則例項JavaScript字串
- c#換行符及空格符(轉義字元)C#字元
- C++ 中的替換空格C++
- js替換字串裡的空格JS字串
- sqlserver資料庫 去除欄位中空格,換行符,回車符(使用replace語句)SQLServer資料庫
- SQLServer中Tab製表符的影響SQLServer
- ios OC 輸入框禁止輸入空格/去掉空格/只能輸入字母和數字iOS
- Problem 4:替換空格(字串)字串
- Python-按空格分割,多個空格當一個空格Python
- 【劍指offer】替換字串中的空格字串
- HTML如何輸入多個空格HTML
- url引數中有+、空格、=、%、&、#等特殊符號的問題解決符號
- 替換字串中的空格《演算法很美》字串演算法
- 【編測編學】零基礎學python_03_字串(拼接+換行+製表符)Python字串
- 測試TOM=SQLLOADER載入製表符號資料SQL符號
- 正則替換 修改字元 去除空格字元
- 適當的方式模仿UITextField佔位符的顏色UI
- 【PB】製表符和基本資料型別資料型別
- JavaScript將字串中的多個空格縮減為一個空格JavaScript字串
- 編譯器的符號表管理編譯符號
- Vue 銀行卡號只輸入數字 並4位補一個空格Vue
- jquery (name=)空格,+,~ 》符號的分層,隔行事件用法jQuery符號事件
- [每日一題] 第十題:替換空格每日一題
- 劍指offer-字串空格替換為“ ”字串
- vue 輸入框輸入4位一空格,控制16位有效字元Vue字元
- pycharm 取消空格,逗號 等符號的自動補全PyCharm符號