我的代码没有在C中看到Whille循环(带有getchar函数)

炼金术师

我的程序看不到while循环,我无法输入c变量

我想输入一个字符串。如果此字符串中的char是数字,则他将保留为数字;如果不是数字,则将ascii代码中更远地移到char'num'位置

#include <stdio.h>
#include <ctype.h>

int main()
{

    int num;
    char c;

    printf("Enter number: \n");
    scanf("%d", &num);

    printf("Enter a string : \n");
    while ((c = getchar()) != '\n')
    {
        if (isdigit(c))
        {
            putchar(c);
        }
        else
        {
            putchar(c + num);
        }
    }

    return 0;
}
Mahonri Moriancumer

使用scanf()和时getchar(),通常必须在所需的键之后按[返回]键。通常,所需的键和返回键都放置在stdin流中。问题代码忽略了这一点。因此,第一个所需的密钥被读取scanf()并存储在中num,但返回键仍'\n'留在缓冲区中。后来由读取getchar()并存储在中c因此,满足了循环退出标准,并且程序终止了。

要使代码正常工作,必须以某种方式读取'\n'调用scanf();或可能还留下的不需要的返回键getchar()

也许像这样:

#include <stdio.h>
#include <ctype.h>

int main()
{
    int num;
    int c;
    char cr[2];
    printf("Enter number: \n");
    scanf("%d%1[\n]", &num, cr);  // Reads %d into num, and garbage '\n' into cr.
    printf("Enter a string : \n");
    while((c = getchar()) != '\n')
    {
        if(isdigit(c))
            putchar(c);
        else
            putchar(c + num);
        getchar(); // Reads garbage '\n' from previous getchar()
    }
    printf("\n");
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果我可以在源代码中看到它,为什么我的工具提示没有显示?

来自分类Dev

C ++ do ... whille循环使用getchar函数进行重复打印

来自分类Dev

我没有在DLLImport中使用的引用中看到Dll

来自分类Dev

我的C代码没有停止,我无法结束循环

来自分类Dev

我在代码中看到了与列表有关的内容,但不确定它的作用

来自分类Dev

Visual Studio 没有看到我的新代码

来自分类Dev

我没有看到“发布”按钮。如何从 C++ 代码制作独立的 exe 文件?

来自分类Dev

我的循环代码没有增加。

来自分类Dev

handleMessage没有看到我的类和函数

来自分类Dev

对我在求职面试中看到的C代码感到困惑

来自分类Dev

我在求职面试中看到的这个C代码感到困惑

来自分类Dev

有什么办法可以让我在Swift中看到PhotoScroller?

来自分类Dev

C中带有for循环的toupper函数

来自分类Dev

NetworkManager Applet没有响应,我在〜/ .xsession-errors中看到“ org.freedesktop.Notifications:达到超时”错误

来自分类Dev

带有getchar()和EOF的C程序

来自分类Dev

Codewars Javascript问题-我的代码带有双重for循环超时

来自分类Dev

春季-我没有在sts 3.5发行软件中看到dist或projects文件夹,也没有任何xml文件

来自分类Dev

我的 JavaScript 函数没有在我的 php 代码中运行

来自分类Dev

xaml没有看到我的ivalueconverter

来自分类Dev

我没有看到Xcode中的团队

来自分类Dev

Osirix没有看到我的插件

来自分类Dev

分段故障?我没有看到错误...

来自分类Dev

当我调用该函数时,我没有看到任何文本

来自分类Dev

在我的 for 循环中没有看到来自第二个类的方法引用

来自分类Dev

没有看到带有jqueryvalidation和msdropdown的错误消息

来自分类Dev

有没有办法在球拍中看到lambda的身体?

来自分类Dev

Sulu CMS:有没有办法在模板中看到,天气是渲染预览?

来自分类Dev

为什么我的C#函数没有从Ajax Javascript代码执行?

来自分类Dev

为什么我在 Laravel 的扩展构造函数中没有看到结果

Related 相关文章

  1. 1

    如果我可以在源代码中看到它,为什么我的工具提示没有显示?

  2. 2

    C ++ do ... whille循环使用getchar函数进行重复打印

  3. 3

    我没有在DLLImport中使用的引用中看到Dll

  4. 4

    我的C代码没有停止,我无法结束循环

  5. 5

    我在代码中看到了与列表有关的内容,但不确定它的作用

  6. 6

    Visual Studio 没有看到我的新代码

  7. 7

    我没有看到“发布”按钮。如何从 C++ 代码制作独立的 exe 文件?

  8. 8

    我的循环代码没有增加。

  9. 9

    handleMessage没有看到我的类和函数

  10. 10

    对我在求职面试中看到的C代码感到困惑

  11. 11

    我在求职面试中看到的这个C代码感到困惑

  12. 12

    有什么办法可以让我在Swift中看到PhotoScroller?

  13. 13

    C中带有for循环的toupper函数

  14. 14

    NetworkManager Applet没有响应,我在〜/ .xsession-errors中看到“ org.freedesktop.Notifications:达到超时”错误

  15. 15

    带有getchar()和EOF的C程序

  16. 16

    Codewars Javascript问题-我的代码带有双重for循环超时

  17. 17

    春季-我没有在sts 3.5发行软件中看到dist或projects文件夹,也没有任何xml文件

  18. 18

    我的 JavaScript 函数没有在我的 php 代码中运行

  19. 19

    xaml没有看到我的ivalueconverter

  20. 20

    我没有看到Xcode中的团队

  21. 21

    Osirix没有看到我的插件

  22. 22

    分段故障?我没有看到错误...

  23. 23

    当我调用该函数时,我没有看到任何文本

  24. 24

    在我的 for 循环中没有看到来自第二个类的方法引用

  25. 25

    没有看到带有jqueryvalidation和msdropdown的错误消息

  26. 26

    有没有办法在球拍中看到lambda的身体?

  27. 27

    Sulu CMS:有没有办法在模板中看到,天气是渲染预览?

  28. 28

    为什么我的C#函数没有从Ajax Javascript代码执行?

  29. 29

    为什么我在 Laravel 的扩展构造函数中没有看到结果

热门标签

归档