【问题标题】:How to break out of while loop in C如何打破C中的while循环
【发布时间】:2016-09-05 20:25:26
【问题描述】:

为什么我不能在 C 中跳出这个循环?

        char command[1];
        scanf("%s", command);
        while(1){
                scanf("%s", command);
                if(command == "q")
                        break;
        }

【问题讨论】:

  • 因为它充满了未定义的行为。您没有在字符串中提供足够的空间;你不比较这样的字符串(使用strcmp())。你需要检查scanf()的结果;不清楚连续两次调用scanf() 是否是个好主意。

标签: c loops while-loop


【解决方案1】:

根据您要执行的操作,您可能希望使用 scanf 格式的 %c 而不是 %s。那会给你一个字符。然后你可以像这样比较“q”:command[0]=='q'

但您可能希望接收多字符命令,在这种情况下,您需要 strcmp 和更长的缓冲区。

【讨论】:

    【解决方案2】:

    'command' 是一个变量,其中包含堆段中某处的内存块地址,而“q”被编译器替换为文本段中的内存块地址,其中保留了所有常量字符串。这意味着“==”运算符比较进程内存不同段中的两个地址。因此,它永远不会是 TRUE。 您必须使用 strcmp 或 strncmp 函数来比较字符串而不是这些字符串的地址。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 2022-11-13
      • 2020-09-18
      • 2020-03-28
      • 1970-01-01
      相关资源
      最近更新 更多