这是我正在执行的代码:

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

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));

关于c - C字符串输入输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22793081/

10-11 21:58
查看更多