C++关于字符的接收与输出操作示例

 更新时间:2023年01月06日 08:55:25   作者:—Miss. Z—  
这篇文章主要介绍了C++关于字符的接收与输出操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

C语言中,在使用scanf("%c",&data);读取一个字符时,有时会遇到scanf吞回车符的情况。 这里搜到几种常用的解决方法:

1.在scanf()中使用’\n’屏蔽回车符号。

scanf("\n%c",&c);

2.在scanf()格式串最前面添加空格,屏蔽回车字符

scanf(" %c",&c); //%c前面加空格,过滤回车

3.在接收字符前,使用getchar()来读取一次回车符号

getchar(); //专门用来读取上次输入的回车符号
scanf("%c",&c);

4.在接收字符前,使用fflush()清空输入流中缓冲区中的内容

fflush(stdin); //清空输入流缓冲区的字符,注意必须引入#include<stdlib.h>头文件
scanf("%c",&c);

C++中输出字符数组时的常见问题:

例1:

#include<iostream>
using namespace std;
int main() 
{
	char a[8];
	for (int i = 0; i < 8; i++)
		cin >> a[i];
	cout << a << endl;
	return 0;
}

运行结果:

分析:输出时出现汉字乱码 原因:字符数组里存放内容没有字符结束标志 ‘\0’

解决方法:

#include<iostream>
using namespace std;
int main() 
{
	char a[8];
	for (int i = 0; i < 8; i++)
		cin >> a[i];
	a[8] = '\0'; //最后留一个位置给'\0'
	cout << a << endl;
	return 0;
}

运行结果:

分析:在字符串的末尾手动加’\0’,此时循环遇到’\0’即结束,不会出现汉字乱码

例2:

#include<iostream>
using namespace std;
int main() 
{
	char words[] = { 'a', 'b', 'c', 'd', 'e' };
	cout << words << endl;
	return 0;
}

同例1情况,字符数组末尾没有’\0’作为结束,会出现汉字乱码

解决方法:手动在数组末尾加’\0’

#include<iostream>
using namespace std;
int main() 
{
	char words[] = { 'a', 'b', 'c', 'd', 'e','\0' };
	cout << words << endl;
	return 0;
}

以上两种方法都需要自己手动加’\0’,也可以使用另外两种系统自动加’\0’的方法

方法1:直接用cin输入字符数组,最后系统会自动加上\0空字符,且它占数组的一个char内存

#include<iostream>
using namespace std;
int main() 
{
	char a[9];
	cin >> a ;//最后会自动加上\0空字符,且它占数组的一个char内存
	cout << a  << endl;
	return 0;
}

方法2:运用get()函数或getline函数,同样最后系统会自动加上\0空字符,且它占数组的一个char内存

#include<iostream>
using namespace std;
int main()
{
	char ch[50];
	cin.getline(ch, 30);//可以换成cin.get(ch, 30)
	cout << ch << endl;
	return 0;
}

到此这篇关于C++关于字符的接收与输出操作示例的文章就介绍到这了,更多相关C++字符接收与输出内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于稀疏图上的Johnson算法的详解

    基于稀疏图上的Johnson算法的详解

    本篇文章介绍了,稀疏图上的Johnson算法的详解。需要的朋友参考下
    2013-05-05
  • 剑指offer之判断链表是否包含环

    剑指offer之判断链表是否包含环

    今天小编就为大家分享一篇关于剑指offer之判断链表是否包含环,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • 使用C语言打印月历

    使用C语言打印月历

    这篇文章主要为大家详细介绍了使用C语言打印月历,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • C++用函数对算法性能进行测试

    C++用函数对算法性能进行测试

    算法无处不在,算法是程序的灵魂,而数据结构则是程序的骨架,二者共同构成了程序,那么如何评估算法的性能呢?理论上可以通过计算时间复杂度的方法来评估,但这是理性的认识,我们还有一种直观的评估方法,那就是程序执行的时间
    2022-08-08
  • C++读写Excel的实现方法详解

    C++读写Excel的实现方法详解

    本篇文章是对C++读写Excel的实现方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言 深入解读数据结构之堆的实现

    C语言 深入解读数据结构之堆的实现

    堆就是用数组实现的二叉树,所以它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置
    2021-11-11
  • C++实现简单的信息管理系统

    C++实现简单的信息管理系统

    这篇文章主要为大家介绍了C++实现简单的信息管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • C语言编程实例之输出指定图形问题

    C语言编程实例之输出指定图形问题

    这篇文章主要介绍了C语言编程实例之输出指定图形问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • C语言实现二叉链表存储

    C语言实现二叉链表存储

    这篇文章主要为大家详细介绍了C语言实现二叉链表存储的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • C++学习之Lambda表达式的用法详解

    C++学习之Lambda表达式的用法详解

    Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名。本文就来为大家详细讲讲C++中Lambda表达式的使用,需要的可以参考一下
    2022-07-07

最新评论