C语言问题 感觉代码都对但运行错误

#include <stdio.h>
#include <string.h> 

int main()
{
    int i,a,b[4],sum=0;char c[120];
    for(i=0;i<4;i++)
    scanf("%d",&b[i]);
    scanf("%s",c);
    for(i=0;i<strlen(c);i++)
       if(c[i]==1)
          sum=sum+b[0];
       else if(c[i]==2)
          sum=sum+b[1];
       else if(c[i]==3)
          sum=sum+b[2];
       else
          sum=sum+b[3];
    printf("%d",sum);   
} 

我输入的值:
1 2 3 4
123214

调试的时候我发现i=0时,进入不到c[i]==1这个循环里面
求解这是为什么?

if(c[i]==1)
->
if(c[i]=='1')
别的类似


#include <stdio.h>
#include <string.h> 

int main()
{
    int i,a,b[4],sum=0;char c[120];
    for(i=0;i<4;i++)
    scanf("%d",&b[i]);
    scanf("%s",c);
    for(i=0;i<strlen(c);i++)
       if(c[i]=='1')
          sum=sum+b[0];
       else if(c[i]=='2')
          sum=sum+b[1];
       else if(c[i]=='3')
          sum=sum+b[2];
       else
          sum=sum+b[3];
    printf("%d",sum);   
} 


另外for循环代码可以简化为
 for(i=0;i<strlen(c);i++)
 sum=sum+b[c[i] - '0' + 1];

你的数组c是char型,c中的元素是字符,所以要比较相等也应该用字符,而不是数字。

正确代码如下:

int main()
{
    int i,a,b[4],sum=0;char c[120];
    for(i=0;i<4;i++)
    scanf("%d",&b[i]);
    scanf("%s",c);
    for(i=0;i<strlen(c);i++){
       if(c[i]=='1')
          sum=sum+b[0];
       else if(c[i]=='2')
          sum=sum+b[1];
       else if(c[i]=='3')
          sum=sum+b[2];
       else
          sum=sum+b[3];
    }
    printf("%d",sum); 
    return 0;  
} 

图片说明
图片说明