C 从数组打印字母

C 从数组打印字母,c,C,我尝试了很多事情,但我就是找不到解决问题的办法。我试图逐个打印数组的内容,但它崩溃了。如何在每次迭代后打印出每个索引对应的字母 main() { int i; char myArray[10]; for(i = 0; i < 5; i++) { myArray[i] = "a"; printf("%s\n", myArray[i]); } } 以及: arr是包含类型为char的元素的数组-您应该为每个元素分配“a”,而不是“a”(后者为您提供

我尝试了很多事情,但我就是找不到解决问题的办法。我试图逐个打印数组的内容,但它崩溃了。如何在每次迭代后打印出每个索引对应的字母

main() {
   int i;
   char myArray[10];

   for(i = 0; i < 5; i++) {
    myArray[i] = "a";
    printf("%s\n", myArray[i]);
   }

}
以及:

  • arr
    是包含类型为
    char
    的元素的数组-您应该为每个元素分配“a”,而不是“a”(后者为您提供内存中的某个地址,即存储“a”的地址)

  • %s
    用于打印以null结尾的字符串。由于数组中的元素类型,请改用
    %c

  • 请注意,最好使用如下主选项:

    int main(void)
    {
      ...
      return 0;
    }
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #define ARRAY_SIZE 10
    
    int main(void) // we're not using argc and argv
    {
        size_t i; // use size_t since i is used as an array index
        char myArray[ARRAY_SIZE];
    
        for (i = 0; i < ARRAY_SIZE; i++) 
        {
            myArray[i] = 'a';
            printf("%c\n", myArray[i]);
        }
    
        return EXIT_SUCCESS; // defined in stdlib.h
    }
    
  • 主函数没有返回值。您需要使用int或void

  • arr[i]=“a”
    将以null结尾的字符串分配给
    arr[i]
    ,您要分配一个字符

  • 什么是arr?您的数组的名称是
    myArray

  • printf(“%s\n”,myArray[i])
    myArray[i]
    解释为一个字符串,但它是一个字符

  • 这是正确的程序:

    int main() 
    {
        int i;
        char myArray[10];
    
        for (i = 0; i < 5; i++) 
        {
            myArray[i] = 'a';
            printf("%c\n", myArray[i]);
        }
    }
    
    intmain()
    {
    int i;
    char-myArray[10];
    对于(i=0;i<5;i++)
    {
    myArray[i]=“a”;
    printf(“%c\n”,myArray[i]);
    }
    }
    
    为了完成,我觉得有义务指出,即使
    返回0不是很正式,我将在下面演示


    另外,您知道您只迭代5,但声明为10吗

    -e0k

    @谢谢你提醒我。是啊,我需要睡一觉呵呵

    -阿斯伯格

    为了让您记住遍历数组中声明的相同数量的索引,您应该
    #定义数组长度,如下所示:

    int main(void)
    {
      ...
      return 0;
    }
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #define ARRAY_SIZE 10
    
    int main(void) // we're not using argc and argv
    {
        size_t i; // use size_t since i is used as an array index
        char myArray[ARRAY_SIZE];
    
        for (i = 0; i < ARRAY_SIZE; i++) 
        {
            myArray[i] = 'a';
            printf("%c\n", myArray[i]);
        }
    
        return EXIT_SUCCESS; // defined in stdlib.h
    }
    
    #包括
    #包括
    #定义数组大小为10
    int main(void)//我们没有使用argc和argv
    {
    size\u t i;//使用size\t,因为i用作数组索引
    char myArray[ARRAY_SIZE];
    对于(i=0;i
    您正在使用%s(字符串)格式说明符打印字符-tryn printf(“%c\n”,myArray[i]);另外,您正在使用“”双引号将字符串分配给单个字符,请尝试对sngle字符使用单引号-myArray[i]=“a”;什么是arr[i]
    ?我在任何地方都没有看到声明(或初始化)的
    arr
    。您从未初始化过myArray。arr是未定义的。另外,你知道你只在迭代5,但声明为10吗?当我做myArray[I]='a'时它会工作;printf(“%c\n”,myArray[i]);好的,我的编译器也允许我省略返回值,但是你真的应该将返回值添加到main中,否则这也很糟糕。但是也可以删除arr部分。我改了名字,也忘了编辑那个名字。已经纠正了