當前位置:首頁 » 編程語言 » c語言判斷空格和回車個數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言判斷空格和回車個數

發布時間: 2023-08-16 07:22:06

① 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語言初學者,編寫一個統計空格、製表符和換行符個數程序

1、直接對每個字元進行判斷,如果是其中一種,數目加一即可。

2、常式:

#include<stdio.h>
main()
{
intc,hs,kgs,zfbs;
hs=0,kgs=0,zfbs=0;/*初始化*/
while((c=getchar())!='#')
{
if(c==' ')
++hs;
if(c=='')
++kgs;
if(c==' ')
++zfbs;
}
printf("%d%d%d ",hs,kgs,zfbs);/*zbfs改為zfbs*/
}
/*nl,cl,bl可能是代錶行數,空格數,製表符數的英文縮寫*/

③ C語言 輸入10個字元,統計其中英文字母、空格或回車、數字字元和其他字元的個數。

你的程序 符號不對 用中文輸入法時要用半形的不要用全形的符號 或者直接以英文形式輸入
#include <stdio.h>
main( )
{
char c;
int letter=0,space=0,digit=0,other=0;
printf("i請輸入10個字元:\n");
while((c=getchar( ))!='\n') /*讀取當前字元,如不為回車符則進行統計*/
{
if(c>='a' &&c<='z'||c>='A'&&c<='Z')
letter++;
else if(c==' ')
space++;
else if(c>='0'&&c<='9')
digit++;
else
other++;
}
printf(" letter=%d,space=%d,digit=%d,other=%d\n",letter,space,digit,other);
}

④ C語言:從鍵盤輸入一篇英文文本,統計每個英文字母(分大小寫)及空格、數字、回車和其他字元,咋編

程序代碼:

#include <stdio.h>
#include <string.h>

#define MAX 10000

void input(char source[]);
void output(int sign[], int n);

void main()
{
char source[MAX];
int sign[256];
int i;

input(source);

for(i=0; i<256; i++)
{
sign[i] = 0;
}

//統計字元串中每個字元的數量
for(i=0; i<strlen(source); i++)
{
sign[source[i]]++;
}

output(sign, 256);
}

void input(char source[])
{
int i;

printf("input a string(end of EOF) : ");
for(i=0; i<MAX-1 && (source[i]=getchar())!=EOF; i++);
source[i] = '';
}

void output(int sign[], int n)
{
int i;

//輸出數字
for(i='0'; i<'0'+10; i++)
{
printf("%c : %d ", (char) i, sign[i]);
}

//輸出大寫字母
for(i='A'; i<'A'+26; i++)
{
printf("%c : %d ", (char) i, sign[i]);
}

//輸出小寫字母
for(i='a'; i<'a'+26; i++)
{
printf("%c : %d ", (char) i, sign[i]);
}

//輸出空格
i = 32;
printf("Space : %d ", sign[i]);

//輸出回車
i = 10;
printf("Enter : %d ", sign[i]);

//輸出其他字元
for(i=0; i<256; i++)
{
if(!(i>='0' && i<='9') && !(i>='A' && i<='Z') && !(i>='a' && i<='z') && i!=32 && i!=13)
{
printf("%c : %d ", (char) i, sign[i]);
}
}
}


運行測試: