for循环不运行

Stu*_*ler 3 c for-loop nested-loops

我提出了我认为对于一个尴尬(尽管标准)问题的混乱解决方案:对于给定的用户输入,反转单词的字母

例如:

这是标准测试

sihT si a dradnats tset

并不是

tset dradnats a si sihT

事情的核心是这段代码

  while (!iscntrl(user_input[x])) // quit when new line is read
      {
        restart:
        x++;
        puts("first level test");
        if (user_input[x]==' ')
            {
            puts("second level test");
            for (i=x; user_input[i]!=' '; --i)
                {               
                reverse_words[k]=user_input[i];
                k++;
                puts("third level test");
                goto restart;
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

(是的,我知道,那里有一个goto:/)

但是循环的第三级永远不会被触及.

据推测,(i=x; user_input[i]!=' '; --i)作为for循环参数有一些完全错误的东西?

x,ik,在第一个循环开始之前都被初始化为整数== 0.

P.P*_*.P. 5

那么,你的情况与此相矛盾:

 if (user_input[x]==' ')
            {
            puts("second level test");
            for (i=x; user_input[i]!=' '; --i)
Run Code Online (Sandbox Code Playgroud)

你只输入if user_input[x]是空格,但只要它不等于空格就循环.