c語言判斷是否為空格
⑴ c語言輸入是怎麼區分空格和回車的
C語言中回車,換行,空字元與空格:fgets和gets在讀取換行符的區別
摘要:C語言中,我們常常從終端輸入,並且輸出到終端,鍵盤上的回車,輸入到緩沖區以後,變成了什麼字元?是『\0』還是『\n』?回車與換行有什麼區別?本文主要為你講解C語言中的換行、回車等控制字元,幫助區別它們的實質。
1.空格
它的ASCII碼為0x20,而不是0x00。其中,gets可以讀入空格字元。
2.回車(\r)
這里有一個很重要的區分點:回車符號和回車鍵。
回車(『\r』)效果是輸出回到本行行首,結果可能會將這一行之前的輸出覆蓋掉。例如執行:
puts("hello world!\rxxx");
在終端輸出的是:
xxxlo world!
如果將上面的字元串寫入文件中,例如執行:
char *s = "hello world!\rxxx";
FILE *str = fopen("t.txt","r");
fwrite(s, 16, 1, str);
用文本編輯器打開t.txt。顯示的效果將由打開的編輯器所決定。
vi的效果為
windows記事本效果為
可以看到,vi將\t用^M代替,而記事本就沒有顯示該字元。
3.回車鍵
關於「回車鍵」的來歷,還得從機械英文打字機說起。在機械英文打字機上,有一個部件叫「字車」,每打一個單詞,「字車」就前進一格。當打滿一行字元後,打字者就得推動「字車」到起始位置,這時打字機會有兩個動作響應:一是「字車」被歸位,二是滾筒上卷一行,以便開始輸入下一行,這個推動「字車」的動作叫「回車」。後來,在電動英文打字機上,人們增加了一個直接起「回車」作用的鍵。這個新增的鍵就被稱為「回車鍵」。
回車的ASCII代碼
16進制是「0x0d」
10進制是「13」
在某些語言中可以用"\r"表示。
不同的操作系統對回車的處理是不同的:
在Unix/Linux系統中,換行用"\n"一個字元表示,
而在Windows系統中,則用"\n\r"兩個字元表示。
4.換行(\n)10
如果要實現換行的效果,在終端我們只需要使用'\n'即可;如果要想在win系統下的文本中實現換行的效果,需要使用『\n\r』兩個控制字元
5.C語言對於字元串的處理
首先,回車鍵按下以後,鍵盤緩沖區中存放的是字元\n,如果我們用getchar,那麼我們讀入的是字元「\n」;如果我們使用gets進行讀取,那麼「\n」將被作為表示的結束的控制字元讀取。然後,gets會自動把這個\n轉換成'\0'存儲在字元串中。
另外,如果從終端讀取一個字元串,gets會把最後的換行符\n換成\0,而fgets從stdin讀入的時候,不會對\n進行處理。
⑵ C語言中如何判斷一個字元是空格,下一個字元不是空格
#include<stdio.h>
#include<string.h>
intget_word_nums(constchar*str)
{
if(str==NULL)
{
puts("nullpointer... ");
return-1;
}
intcount=0;
char*p1=NULL;
char*p2=(char*)str;
while(*p2++!='