C 语言中空格,空字符

本文详细解释了C语言中字符串与空字符的差异,包括它们的ASCII码、用途以及如何在输入和输出时正确处理空格与空字符。
部署运行你感兴趣的模型镜像

   空格符号空字符是不一样的,在ASCII里面,空格(space)符号的ASCII码是0x20,而空字符是0x0,2个是完全不一样的2个字符。

        空字符一般来描述一个字符串的结尾,其实是控制符的一种,但不能理解为没有字符,应该理解为代表什么都没有的字符。好比回车0x0A和换行0x0D虽然不显示,但是也是控制字符的一种。(这些字符以前是用于打印机的,所以很多都没有用了) 

        字符串的概念:在C语言中,字符串是指由若干个有效字符(其中包括字母、数字、转义字符、等)组成的系列,以 '/0' 作为字符串结束标志。'/0' 是一个“空操作”字符,它不做任何操作,只是一个标志。'/0'的代码值为0,它不计入串的长度

        还有这里需要注意下在接受字符串的时候,如果用scanf来接收的话,字符串中不能含有空格,否则将以空格作为串的结束符。如果你键入得是harry  potter 那么实际上scanf只能获取harry这个单词。所以要接收空格的话可以用gets()这个函数。


        /0 表示结束符,比如C语言的数组中,最后有个默认的 /0 表示结束。
        /0 不是空格,' ' 才是空格
        "" 就是“一个空的字符串”

  1. char str[13];
  2. cin>>str;
  3. //运行时输入数据: How are you!
  4. cout<< str;
  5. //运行时输出数据: How 
  6. //注意:输入时遇到空格便停止输入。

  1. char str[13] = "How are you!";
  2. cout<<str<<endl;
  3. //运行时输出数据:How are you!
  4. //输出时:遇到空字符串不会停止,遇到"/0"才会停止。
原帖:cpp.cm上的一篇文章,地址不记得了,抱歉。

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

### 关于C语言空格字符的用法及相关特性 #### 1. 空格字符的基础概念 在C语言中,空格字符是一种特殊的字符,通常用于分隔单词或作为占位符。它可以被表示为`' '`(单引号内的一个实际空格)。需要注意的是,空格字符不同于空字符`\0`,后者是一个ASCII码值为0的特殊字符,用来标记字符串的结束位置[^2]。 #### 2. 如何定义包含空格的变量 当声明一个字符数组并初始化时,可以使用不同的方式来区分空格空字符: - `char a[1] = {' '};` 表示该数组的第一个元素是一个空格字符。 - `char a[1] = {''};` 则表示该数组的第一个元素是空字符(即`\0`),这实际上相当于未赋任何有效值给这个字符数组[^2]。 #### 3. 处理带有空格字符串 由于C语言本身并没有内置支持高级数据结构如其他编程语言中的`String`类,因此处理字符串时常需借助字符数组完成操作。对于含有空格字符串输入,可以通过特定方法获取整个行的内容而不是仅限第一个词: ```c #include<stdio.h> int main(){ char str[100]; printf("请输入一段话:"); fgets(str, sizeof(str), stdin); // 使用fgets读取整行包括其中可能存在的空格 puts("您刚刚输入的是:"); fputs(str, stdout); } ``` 上述代码片段展示了如何利用`fgets()`函数从标准输入流读入一行文字到缓冲区str[]里去,这样即使用户键入了多个由空白间隔开来的词语也能完整保存下来[^3]。 #### 4. 去除字符串两端多余的空格 有时候我们需要清理掉某些字符串开头结尾处不必要的空格以便进一步分析或者显示美观度考虑。下面给出了一种简单的算法实现这一功能: ```c void trim(char *s){ int i,j; while(*s && isspace((unsigned char)*s)) s++; /* 找到首个非空间的位置 */ for(i=strlen(s)-1;i>=0&&isspace((unsigned char)s[i]);i--);/* 定位最后一位非空格*/ s[++i]='\0';//重新设置终止标志 } int main(void){ char testStr[]=" Hello world! "; printf("原始串:%s\n",testStr); trim(testStr); printf("修剪后的串:'%s'\n",testStr); return 0; } ``` 此程序首先跳过了所有的前导空格找到真正的起始点;接着再反向扫描寻找最后一个有意义字符之后立即切断后续所有无意义部分[^4]。 ### 问题
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值