C语言,将输入的字符串(含空格)的内容进行逆序打印

我们在输入字符串时就要考虑一个问题,由于C语言是没有字符串类型的,所以我们首先肯定要有一个字符串数组来存放我们输入的字符串

再然后一个问题是,如何输入一个包含空格的字符串

这里如果我们直接使用scanf

int main()
{
    char ch[100] = { '\0' };
    scanf("%s", ch);
    printf("%s", ch);
    return 0;
}

98896e1711054e5c93166785ad20860c.png

这里输出的结果就会很尴尬,因为scanf函数在从输入缓冲区内读取字符时,如果遇到空格,那么就会将其当成多组输入进行读取,所以我们这里就不能使用scanf函数 

接下来我们来看一下gets()函数

# include <stdio.h>
char *gets(char *str);

 gets() 函数的功能是从输入缓冲区中读取一个字符串存储到字符指针变量 str 所指向的内存空间。str 可以是一个字符指针变量名,也可以是一个字符数组名。

关于使用 gets() 函数需要注意:使用 gets() 时,系统会将最后“敲”的换行符从缓冲区中取出来,然后丢弃,所以缓冲区中不会遗留换行符.

gets()用于从标准输入流stdin读入一个整行(以'\n'或EOF)结束。

所以我们就要将scanf()替换成gtes()

c5e40cb4ed814a6faf4070c7bada9b24.png

 然后下个问题就是将字符数组的内容进行逆序了,这个还是很简单,我们利用二分查找的思想,给定一个左下标和右下标,通过临时变量和下标对数组内容进行一个替换就好了,关于这部分的详解请看http://t.csdn.cn/VmjYo

接下直接给出代码

#include <stdio.h>
#include <string.h>
int main()
{
	char ch[1000] = {'\0'};
	gets(ch);
	int len = strlen(ch);
	
	int left = 0;
	int right = len - 1;
	//交换数组内容
	while (left <= right)
	{
		char m = ch[left];
		ch[left] = ch[right];
		ch[right] = m;
		left++;
		right--;
	}
	printf("%s", ch);
	return 0;
}

 欢迎点赞留言

 

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南山忆874

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值