C字符串输入输出

时间:2014-04-01 17:43:42

标签: c scanf c-strings

这是我正在执行的代码:

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

1 个答案:

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