利用一个字符数组作函数参数,实现字符串(最大长度为80个字符 )的逆序存放。

利用一个字符数组作函数参数,实现字符串(最大长度为80个字符 )的逆序存放。
要求如下:
(1)在子函数Inverse中实现字符串的逆序存放。函数原型为:
     void Inverse(char str[]);
(2)在主函数中
     从键盘输入字符串(使用gets函数)      
     然后,调用Inverse函数,
     最后,输出逆序后的字符串。
(3)**输入提示信息:"Input a string:\n"
   **输出提示信息:"Inversed results:\n"
   **输出格式:"%s\n"
程序运行示例:
Input a string:
qwertyu
Inversed results:
uytrewq

这道题的解答如下:

//字符串逆序函数:
void Inverse(char str[])
{
	int   len = 0, i, j;
	char temp;
	len = strlen(str);
	str[len - 1] = '\0';//减掉末尾的\n(如果是和fgets配套使用的话要加,和scanf使用配套使用时不用)
	len = strlen(str);
	j = len - 1;
	for (i = 0; i < j; i++, j--)//交换数据
	{
		temp = str[i];
		str[i] = str[j];
		str[j] = temp;
	}
}
int main()
{
	char str[80];
	printf("Input a string:\n");
	//scanf("%s", str);
	fgets(str, 80, stdin);
	printf("Inversed results:\n");
	Inverse(str);
	puts(str);
	return 0;
}

这道题目不难解,有一个重要的点是区分scanf和fgets,注意我注释中写到的.其中 str[len - 1] = '\0';//减掉末尾的\n(如果是和fgets配套使用的话要加,和scanf使用配套使用时不用)的意思是,如果用scanf读取数据的时候将这句话注释掉,不然会缺少数据,具体大家可以试试,发生这种情况的主要原因是scanf和fgets读取数据的差别:

注意第二点!给大家看看如果用scanf而且带有str[len - 1] = '\0';结果会怎么样:

再看看注释掉之后:

倘若用fgets的时候将str[len - 1] = '\0';注释掉会发生下面的情况:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值