这是我正在执行的代码:
scanf("%s",expr);
i=0,j=0;
while(expr[i]!='+')
{
l[j++]=expr[i++];
}
j=0;
while(expr[i]!='=')
{
r[j++]=expr[i++];
}
j=0;
while(expr[i]!='\0')
{
s[j++]=expr[i++];
}
printf("%s %d %s %d %s %d",l,strlen(l),r,strlen(r),s,strlen(s));
我无法理解为什么没有显示正确的输出。
对于例如在1+1=2
的情况下
输出应为1 1 +1 2 =2 2
但我得到的是1 2symbols 3 +1 2 =2 3symbols 5
答案 0 :(得分:1)
在每个字符串的末尾添加\0
。
scanf("%s",expr);
i=0,j=0;
while(expr[i]!='+')
{
l[j++]=expr[i++];
}
l[j]='\0'; //here
j=0;
while(expr[i]!='=')
{
r[j++]=expr[i++];
}
r[j]='\0'; //here
j=0;
while(expr[i]!='\0')
{
s[j++]=expr[i++];
}
s[j]='\0'; //and here
printf("%s %d %s %d %s %d",l,strlen(l),r,strlen(r),s,strlen(s));