用递归反向输出字符串
本帖最后由 李京 于 2021-2-2 22:23 编辑这是我的程序,只要在字符中间插入空格就会出问题,但是我不知道为什么
#include <stdio.h>
void Str(char *str,int i);
void Str(char *str,int i)//反向输出函数 i是用来存放到第几个字符了
{
if(str!='!')//判断是否识别到 '!'
{
Str(str,i+1);
}
else
{
printf("反向输出:");
}
printf("%c",str);
}
int main(void)
{
char str;//存放输入的字符串
printf("请输入一行以感叹号结尾的英文:");
scanf("%s",str);
Str(str,0);
printf("\n");
return 0;
}
具体问题是带你学C带你飞的s1e34动动手的第0题
S1E34:递归 | 课后测试题及答案
https://fishc.com.cn/thread-79025-1-1.html
(出处: 鱼C论坛)
scanf函数在输入字符串时遇到空格自动结束,换成gets或者fgets就好了
#include <stdio.h>
void Str(char *str,int i);
void Str(char *str,int i)//反向输出函数 i是用来存放到第几个字符了
{
if(*(str+i)!='!')//判断是否识别到 '!'
{
Str(str,i+1);
}
else
{
printf("反向输出:");
}
printf("%c",*(str+i));
}
int main(void)
{
char str;//存放输入的字符串
printf("请输入一行以感叹号结尾的英文:");
gets(str);
Str(str,0);
printf("\n");
return 0;
}
因为你的scanf用法不对。
应该改为scanf("%s",&str) 黄飞鸿爱python 发表于 2021-2-2 22:56
因为你的scanf用法不对。
应该改为scanf("%s",&str)
???
老弟,你的基础不扎实啊,
字符串是不需要取地址符的 shawshanke 发表于 2021-2-3 04:13
scanf函数在输入字符串时遇到空格自动结束,换成gets或者fgets就好了
scanf()中空格是结束符,可以用"%[]"对结束符进行自定义(^+任意字符),比如scanf("%[^\n]",str);//直到输入回车键,读取才结束,和gets(str)效果一样 scanf不识别空格,空格在scanf里是结束符,可以试试用gets 楼上正解,应该使用gets(); shawshanke 发表于 2021-2-2 22:23
scanf函数在输入字符串时遇到空格自动结束,换成gets或者fgets就好了
难怪了,谢谢 本帖最后由 jackz007 于 2021-2-3 10:21 编辑
#include <stdio.h>
void fun(char str[])
{
if(str) {
fun(& str) ;
printf("%c" , str) ;
}
}
int main(void)
{
char str;//存放输入的字符串
printf("请输入一行以感叹号结尾的英文:") ;
gets(str) ;
fun(str) ;
}
编译、运行实况
D:\0002.Exercise\C>g++ -o x x.c
D:\0002.Exercise\C>x
请输入一行以感叹号结尾的英文:hello , world !
! dlrow , olleh
D:\0002.Exercise\C> 四季果 发表于 2021-2-3 09:51
scanf()中空格是结束符,可以用"%[]"对结束符进行自定义(^+任意字符),比如
学到了,感谢
页:
[1]