所以 - 我的程序没有停止条件(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);
}
感谢所有能够看到并告诉我为什么程序不会在指定条件下停止的人。
答案 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++;
}