当前位置:首页 » 编程语言 » 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]);
}
}
}


运行测试: