为什么输入“#”后不会自动结束输出呢?

为什么输入“#”后不会自动结束输出呢?

#include

#define N 10
int bian(char * str);
int main()

{

int k,he=0,m=0;
char b[80];

int c[80];
int a[N]={6,2,5,5,4,5,6,3,7,6};
while(scanf("%c",&b[m++])){
if(b[m-1]=='#')
break;

}
int n=bian(b);
for(int i=0;i
c[i]=b[i]-'0';

while(n>0)

{k=n%10;

he+=a[k];

n/=10;



}

printf("%d",he);

return 0;

}
int bian(char * str)
{
int y = 0;

for(int i = 0; i < (int)strlen(str); i++)
{
    y=y*10+(str[i]-48);
}
return y;}

改动处见注释,供参考:

#include <stdio.h>
#define N 10
int bian(char * str);
int main()
{
    int k,he=0,m=0;
    char b[80];
    int  c[80];
    int  a[N]={6,2,5,5,4,5,6,3,7,6};
    while(scanf("%c",&b[m])==1 && b[m] != '#'){ //修改
           m++;                                 //if(b[m-1]=='#')
                                                // break;
    }
    b[m] = '\0';  //修改
    int n=bian(b);
    for(int i=0;i<strlen(b);i++)
        c[i]=b[i]-'0';
    while(n>0)
    {
        k=n%10;
        he+=a[k];
        n/=10;
    }
    printf("%d",he);
    return 0;
}
int bian(char * str)
{
    int y = 0;
    for(int i = 0; i < (int)strlen(str); i++)
    {
        y=y*10+(str[i]-48);
    }
    return y;
}