为什么我的整数数组元素在C中指定字符值时包含错误的值?如何解决这个问题?

为什么我的整数数组元素在C中指定字符值时包含错误的值?如何解决这个问题?,c,arrays,for-loop,character,C,Arrays,For Loop,Character,我编写了以下代码: #include <stdio.h> #include <string.h> int main() { char *string = "abcd"; int i;int j; int array[5]; for(i=0; i<strlen(string); i++) array[i] = string[i]; for(j=0; j<4; j++) printf("arra

我编写了以下代码:

#include <stdio.h>
#include <string.h>
int main()
{
    char *string = "abcd";
    int i;int j;
    int array[5];
    for(i=0; i<strlen(string); i++)
       array[i] = string[i];  
    for(j=0; j<4; j++)
      printf("array[i] %d\n",array[i]);


     array[0] = string[0]; 
     printf("array[0] %d\n",array[0]);


return 0;
}
我认为结果是:

array[i] 97
array[i] 98
array[i] 99
array[i] 100
array[0] 97
如果此任务:

array[0] = string[0];

将97分配给数组[0],那么为什么在循环中执行类似的分配会产生不同的输出,以及如何修复代码以使输出看起来与我预期的一样?

问题在于索引值不匹配

for(j=0; j<4; j++)
      printf("array[i] %d\n",array[i]);

对于(j=0;j问题在于索引值不匹配

for(j=0; j<4; j++)
      printf("array[i] %d\n",array[i]);

for(j=0;j如前所述,printf循环在j上,但您使用i作为数组的索引,而您应该使用j进行索引。printf中还硬编码了j,它应该是%d,然后用j填充

#include <stdio.h>
#include <string.h>
int main()
{
    char *string = "abcd";
    int i;int j;
    int array[5];
    for(i=0; i<strlen(string); i++)
       array[i] = string[i];  
    for(j=0; j<4; j++)
      printf("array[%d] %d\n",j,array[j]);


     array[0] = string[0]; 
     printf("array[0] %d\n",array[0]);


return 0;
}

如前所述,printf循环在j上,但您使用i作为数组的索引,而您应该使用j进行索引。printf中也有j硬编码,它应该是%d,然后用j填充

#include <stdio.h>
#include <string.h>
int main()
{
    char *string = "abcd";
    int i;int j;
    int array[5];
    for(i=0; i<strlen(string); i++)
       array[i] = string[i];  
    for(j=0; j<4; j++)
      printf("array[%d] %d\n",j,array[j]);


     array[0] = string[0]; 
     printf("array[0] %d\n",array[0]);


return 0;
}

在这个循环中,您应该迭代变量i,而不是变量j:for(j=0;j@LPs挑剔:将格式字符串中的i也更改为j.:@SouravGhosh是的,我删除了。其他答案/注释更好。;)在这个循环中,您应该迭代变量i,而不是变量j:for(j=0;j@LPs吹毛求疵:将格式字符串中的i也更改为j.:@SouravGhosh是的,我删除了。其他答案/注释更好。。)
array[0] 97
array[1] 98
array[2] 99
array[3] 100
array[0] 97