鱼C论坛

 找回密码
 立即注册
查看: 2977|回复: 5

为什么第二行是空行????

[复制链接]
发表于 2012-4-29 20:32:32 | 显示全部楼层 |阅读模式
1鱼币
#include <stdio.h>
int main()
{
       intn,i,j;
       charstr[200];
       scanf("%d",&n);
       for(i = 0 ; i < n+1 ; i++)
       {
              gets(str);
              for(j=0 ; str[j] != '\0' ; j++)
              {
                     if(str [j] >= 'a' && str[j] <= 'z' )
                     {
                            str[j]= 'a' + 'z' - str[j];
                            printf("%c",str[j]);
                     }
                     elseif  (str[j] > 'A' && str[j]< 'Z')
                     {
                            str[j]='A' + 'Z' - str[j];
                            printf("%c",str[j]);
                     }
                     else
                            putchar(str[j]);
              }
              printf("\n");
       }
       return0;
}

最佳答案

查看完整内容

gets(str);从标准输入流中读取一行,读到的是第二行(没有任何输入),并在数组末加\0'。 因而str中只有一个'\0',第二个for语句不会进入内部,执行printf("\n");出现空白行
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-29 20:32:33 | 显示全部楼层
gets(str);从标准输入流中读取一行,读到的是第二行(没有任何输入),并在数组末加\0'。
因而str中只有一个'\0',第二个for语句不会进入内部,执行printf("\n");出现空白行
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-4-30 12:57:31 | 显示全部楼层

需要怎么修改,才能不出现空行??
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-4-30 16:11:10 | 显示全部楼层
Elio 发表于 2012-4-30 12:57
需要怎么修改,才能不出现空行??

#include <stdio.h>
int main()
{
        int n,i,j;
        char str[200];
        scanf("%d",&n);
        gets(str);             //多加一个gets
        for(i = 0 ; i < n+1 ; i++)
        {
                gets(str);
                for(j=0 ; str[j] != '\0' ; j++)
                {
                        if(str [j] >= 'a' && str[j] <= 'z' )
                        {
                                str[j]= 'a' + 'z' - str[j];
                                printf("%c",str[j]);
                        }
                        else
                        {
                                if(str[j] > 'A' && str[j]< 'Z')                                  
                                {          
                                        str[j]='A' + 'Z' - str[j];
                                        printf("%c",str[j]);                          
                                }                  
                                else
                                {
                                        putchar(str[j]);
                                }
                        }          
                }          
                printf("\n");          
        }
        return 0;          
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-5-1 14:02:18 | 显示全部楼层
小甲鱼老师视频 曾有几次提到getchar 接受输入字符的问题  再次学习了!~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-5-3 14:12:47 | 显示全部楼层
莫名其妙 发表于 2012-5-1 14:02
小甲鱼老师视频 曾有几次提到getchar 接受输入字符的问题  再次学习了!~

嗯,谢谢。那视频正在学习中。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-13 02:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表