2014-04-01 208 views
1

這是我執行的代碼:C字符串輸入輸出

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

+2

您需要正確終止C中的所有字符串。 – pmg

+0

是的。謝謝,有時候,小事會弄亂整個代碼; – Ignited

回答

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