我的节目不会因此而停止

时间:2014-02-16 13:21:03

标签: c string

所以 - 我的程序没有停止条件(str2 [o]!='+') 因此,如果有人知道为什么以及如何解决它,它将帮助我(:。

这是我的代码 -

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char str3[9]= "2+48*4+7";
char str2[9];

int w =0,o = 0;

for(w = 0; w < 9; w++)
{
    if(str3[w] == '*')
    {
        while(str2[o] != '+')
        {
            str2[o] = str3[w];
            o++;
            w++;
        }
    }
}

printf("%s\n",str2);

}

感谢所有能够看到并告诉我为什么程序不会在指定条件下停止的人。

4 个答案:

答案 0 :(得分:1)

+被复制到str2时,o index将指向下一个char,它很可能不会是+,所以你的条件永远不会成立。这可能是解决方案:

    do
    {
        str2[o] = str3[w];
        o++;
        w++;
    }
    while(str2[o-1] != '+' );

答案 1 :(得分:1)

这一行

while(str2[o] != '+')

引发未定义的行为,因为str2的元素在被读取之前未被正确初始化。

要解决此问题

char str2[9] = "":

答案 2 :(得分:0)

while(str2[o] != '+') 
    {
        str2[o] = str3[w]; 
        o++;
        w++;
    }

假设o == x。你正在为str2 [x]赋值。在while中,你看到str2 [x + 1] =='+',但是str2 [x + 1]是空的。

答案 3 :(得分:0)

你需要检查str2中的最后一个更新值,但是你正在检查下一个没有用字符初始化的值,这样循环就会不断重复。你可以这样做:

while(str2[o-1] != '+'){

     str2[o] = str3[w]; 
    o++;
    w++;
}