2 daxiazaiwusi daxiazaiwusi 于 2016.03.06 12:44 提问

C为什么不输出C

void foo(char *s)
{
int i = 0;
while (s[i] != '\0')
{
if (s[i] == ' ')
{
s[i] = '\0';
foo(s + i + 1);
printf("%s ", s);
break;
}
i++;
}
}
int main()
{
char s[] = "welcome to learn c";
foo(s);
}

3个回答

caozhy
caozhy   Ds   Rxr 2016.03.06 12:46
已采纳
 void foo(char *s)
{
int i = 0;
while (s[i] != '\0')
{
    if (s[i] == ' ') 
    {
        s[i] = '\0';
        foo(s + i + 1);
        printf("%s ", s);
        break;
    }
    i++;
    if (s[i] == '\0') printf("%s ", s); //--------------->修改
}
}
int main()
{
char s[] = "welcome to learn c";
foo(s);
}
WinsenJiansbomber
WinsenJiansbomber   2016.03.06 13:05

程序判断条件是if (s[i] == ' ') ,即单词加空格的格式, word+space,而“C”后面只有 "\0"没有空格,所以不会输出 C

WinsenJiansbomber
WinsenJiansbomber   2016.03.06 13:07

修改方法

void foo(char *s)
{
int i = 0;
while (s[i] != '\0')
{
    if (s[i] == ' ') 
    {
        s[i] = '\0';
        foo(s + i + 1);
        printf("%s ", s);
        break;
    }
    i++;
}
}
int main()
{
        char s[] = "welcome to learn c "; // modify here
        foo(s);
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C中printf循环输出不及时显示的问题
通常的C的输入输出库使用了带缓冲的输入输出,所以 printf 的内容还没有从缓冲中输出。实际在写代码的时候在每句 printf 的后面加上一句fflush(stdout);"
linux下C语言printf没有输出的问题(shell的行缓冲机制)
while(true) { if(recvfrom(sockfd,buf, sizeof(buf), 0, (struct sockaddr*)&src_addr, &len) == -1) { perror("receive failed\n"); return -1; } pr
Eclipse中c开发printf无法输出解决办法
在ecplise下使用cdt开发c程序,发现运行后终端没有输出,停止后会输出,通过在main中添加 setbuf(stdout,NULL); 解决问题,原来是因为默认输出流存在buffer机制,通过上面语句, 取消buffer
linux下编译C程序执行C程序 printf没有输出
linux下编译C程序执行C程序 printf没有输出
C语言为什么不能精确表示浮点数
浮点数是如何存储的呢?目前已知的所有的C/C++编译器都是按照IEEE(国际电子电器工程师协会)制定的IEEE 浮点数表示法来进行运算的。这种结构是一种科学表示法,用符号(正或负)、指数和尾数来表示,底数被确定为2,也就是说是把一个浮点数表示为尾数乘以2的指数次方再加上符号。 从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的
c语言的double类型printf %lf 显示0.00000问题
在编写c primer plis 问:有人告诉我不能在printf中使用%lf。为什么printf()用%f输出double型,而scanf却用%lf呢? 答:printf的%f说明符的确既可以输出float型又可以输出double型。 根据"默认参数提升"规则(在printf这样的函数的可变参数列表中 ,不论作用域内有没有原型,都适用这一规则)float型会被提升为d
解决eclipse中运行c/c++项目时控制台没输出的问题
Run Configurations -> Environment Name : PATH Value : C:\MinGW\bin 即在运行设置中增加 Path=C:\MinGW\bin
C/C++输入输出函数(I/O)总结
在c语言的学习使用过程中,除了格式化输入输出外,还有很多输入输出函数,包括字符串输入输出、文件输入输出等。在使用的过程中一直没有认真总结过,在这里把以前学的好好总结一下,以便时间长了又忘记了。 字符串输入输出 1、输入函数:gets、fgets、scanf gets 遇到换行符时结束,不读取换行符,自动在字符串后面加上空字符(/0); 返回值是指向char的指针(和传递给他的是同一个指针...
c语言输出空格问题。
有时候我们在切题时会发现输出各项间用空格分开的输出要求。最后一个数据后面接着回车,可以有以下解决办法。 (1)。将数据存入数组中,写一个计数的变量count。用count++来统计数据的数量。然后采取以下方式输出: { for(int i=0;i<count-1;i++) printf("%d ",a[i]); printf("%d\n",a[count-1]); } 或者 { print
C语言打印16进制出现0xffffff现象的问题剖析!
其实类似的问题不是只在网络程序中才会出现的,看示例代码:   复制代码   1 #include   2 int main()   3 {   4     char c = 0xc9;   5     printf("A:c = %2x\n",(unsigned char)c);   6     printf("B:c = %2x\n",c & 0