代码不会在C中的do while循环中执行

hlx98007

这是我的代码片段:

printf("\nCommand? ");
ret = scanf("%c", &command);
do
{
    // printf("Command? ");
    // ret = scanf("%c", &command);
    if (ret != 1)
    {
        fprintf(stderr, "Invalid input!\n");
    }

    if (command == 'd')
    {
        result = dequeue(&queue1, &entry);
        if (result == 1)
            printf("%d was dequeued\n", entry);
        else if (result == 0)
            fprintf(stderr, "ERROR: attempt to dequeue from an empty"
                    " queue\n");
    }
    else if (command == 'e')
    {
        ret = scanf("%d", &add);
        result = enqueue(q, add);
    }
    else if (command == 'q')
        break;
    else
        fprintf(stderr, "Invalid command!\n");

    printf("Queue:");
    for (int i = 0; i < q->end; ++i)
    {
        printf("%d", q->element[i]);
    }
    printf("\nCommand? ");
    scanf("%c", &command);
} while (command != 'q');

然后是部分GDB日志:

146             printf("Command? ");
(gdb)
147             ret = scanf("%c", &command);
(gdb)
Command? d
148             if (ret != 1)
(gdb)
153             if (command == 'd')
(gdb)
155                 result = dequeue(&queue1, &entry);
(gdb)
156                 if (result == 1)
(gdb)
158                 else if (result == 0)
(gdb)
159                     fprintf(stderr, "ERROR: attempt to dequeue from an empty"
(gdb)
ERROR: attempt to dequeue from an empty queue
172             printf("Queue:");
(gdb)
173             for (int i = 0; i < q->end; ++i)
(gdb)
177             printf("\nCommand? ");
(gdb)
Queue:
178             scanf("%c", &command);
(gdb)
179         } while (command != 'q');
(gdb)

如您所见,行172printf("Queue:");和其他代码将不被执行。我不知道为什么。

我在命令中输入d

有人可以帮我解释一下吗?谢谢。

hlx98007

全部。

我想我已经弄清楚了怎么做:只是编写另一个函数以打印出所有结果。

所以修改后的代码是这样的:

do
{
    ret = fgets(buf, BUF_LENGTH, "%c %d", &command, &add);
    if (ret != 1 && ret != 2)
    {
        fprintf(stderr, "Invalid input!\n");
        continue;
    }

    if (command == 'd')
    {
        ...
    }
    else if (command == 'e')
    {
         ...
    }
    else if (command == 'q')
        break;
    else
        fprintf(stderr, "Invalid command!\n");

    /* Printing out the queue elements */
    print_element(q);

    printf("Command? ");
} while (command != 'q');

我知道我的代码很乱,我仍然是C编程语言的初学者。我正在学习指针。

代码的“ ...”部分进行了一些修改,但我相信这些更改与I / O不相关。

谢谢大家的建议。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

同时执行循环不会在C中退出

来自分类Dev

我的while循环不会在C程序中重复

来自分类Dev

Linux bash代码未在while-do循环中执行

来自分类Dev

循环不会在R中执行

来自分类Dev

Firestore fetch 永远不会在 Flutter 代码中执行

来自分类Dev

break不会在while循环中中断。为什么?

来自分类Dev

Append不会在Python中“循环”我的搜索代码

来自分类Dev

PinView不会在循环中绘制

来自分类Dev

不会在for循环中打印x

来自分类Dev

循环不会在python程序中执行

来自分类Dev

while 循环不会在 js 中停止

来自分类Dev

Cout不会在while循环中没有endl的情况下打印文本?

来自分类Dev

使用pygame-change播放音频时python不会在while循环中中断

来自分类Dev

wxpython框架不会在while循环中重新绘制其内容

来自分类Dev

为什么此Python代码不会在__hash__中造成无限循环?

来自分类Dev

为什么 JavaScript 代码不会在内容产品 wordpress 中循环

来自分类Dev

setTimeout在do while循环中

来自分类Dev

do while循环中的异常

来自分类Dev

我的代码不会在 for 循环中针对 range() 的某些值运行

来自分类Dev

在while循环中执行操作,直到调用组合键为止c ++

来自分类Dev

类中的while循环不会执行c ++

来自分类Dev

在 for 循环中的 Do-while 循环

来自分类Dev

PHP中的foreach循环中的while循环

来自分类Dev

如何在循环中执行()?在C中

来自分类Dev

如何在循环中执行异步代码?

来自分类Dev

如何在循环中定时执行代码?

来自分类Dev

h3标签不会在php中的foreach循环中回显

来自分类Dev

更少::媒体查询中的CSS规则不会在循环中附加值

来自分类Dev

echo和printf不会在bash中打印循环中分配的变量

Related 相关文章

热门标签

归档