C 循环-可以在循环内更改计数器或条件吗?

标签 c

有几本书向我展示了如何正确编写 for、while 和 do 循环。 许多在线文章将它们相互比较。

但我还没有找到任何地方告诉我什么不该做。例如,如果我在循环中更改计数器或条件变量的值,它会把事情搞砸吗?

我想要一个不依赖于机器的答案。

最佳答案

是的,您可以在一个循环中更改计数器,它有时非常有用。例如,在解析命令行参数时,有一个选项标志后跟一个值。下面显示了一个示例:

输入以下命令:

program -f filename -o option -p another_option

代码:

#include <string.h>

int main(int argc, char** argv)
{

 char *filename, *option, *another_option;

 if(argc > 1){
   for(int i=1; i<argc; i++){
     if(strcmp(argv[i],"-f")==0){
        filename = argv[++i];
     } else if(strcmp(argv[i],"-o")==0){
       option = argv[++i];
     } else if(strcmp(argv[i],"-p")==0){
       another_option = argv[++i];
     } else {
       printf("Option \"%s\" not recognized, skipping\n",argv[i]);
       continue;
     }
   }
 } /* end if argc > 1 */

 return 0;
}

示例程序自动递增计数器以访问正确的命令行字符串。当然有一些方法可以合并计数器等,但在这种情况下它们只会使代码更加繁琐。

正如其他人所指出的,这是许多人编写错误的地方,在循环内递增计数器时必须小心,特别是当循环以计数器值为条件时。

关于C 循环-可以在循环内更改计数器或条件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10808469/

相关文章:

C - 类型不匹配

python - 什么更快 : multiple `send` s or using buffering?

c++ - 使用 WinCrypt 进行 AES-128 加密

c - 为什么 strcat 函数会出现段错误?

c - 如何使用 fork() 和 execlp() 在不同终端上运行命令

c - 编译器第一次到达 C 程序中的#include 语句时执行什么功能

c - 将 strtok 存储在数组中 ~ C

C 编程- 指针

c - Lua C API代码不调用__newindex函数而是调用其他函数

c - 如果使用这个程序,为什么第一个字母不进入数组?