C字符串输入输出
这是我正在执行的代码:C字符串输入输出,c,scanf,c-strings,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
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
输出应该是11+12=22
但是我得到的是
12符号3+12=23符号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中的所有字符串。是的,明白了。谢谢,有时候小事情会把整个代码搞乱;