打印出数组中的字母

时间:2016-01-22 19:53:03

标签: c

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

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

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

}

我也尝试过:

printf("%c\n", myArray[i])

printf("%d\n", (int)myArray[i]) gives me the numbers 36.

4 个答案:

答案 0 :(得分:2)

  1. arr是包含char类型元素的数组 - 你应该为每个元素分配'a'而不是“a”(后者在内存中给你一些地址 - 即地址在哪里存储“a”。

  2. %s用于打印以空字符结尾的字符串。由于数组中的元素类型,请使用%c

  3. PS。像这样更好地使用main:

    int main(void)
    {
      ...
      return 0;
    }
    

答案 1 :(得分:2)

  1. 您的主要功能没有返回值。你需要使用int或void。

  2. arr[i] = "a";arr[i]分配一个以空字符结尾的字符串,您想要指定一个字符。

  3. 什么是arr?您的数组名称为myArray

  4. printf("%s\n", myArray[i]);会将myArray[i]解释为字符串,但它是一个字符。

  5. 这是更正后的计划:

    int main() 
    {
        int i;
        char myArray[10];
    
        for (i = 0; i < 5; i++) 
        {
            myArray[i] = 'a';
            printf("%c\n", myArray[i]);
        }
    }
    

答案 2 :(得分:1)

为了完成,我觉得有义务指出即使return 0;也不是正式的,我将在下面进行演示。

  

另外,你知道你只是在迭代5,但宣布为10?

     

-e0k

     

@ e0k感谢您的注意。我,我需要一些睡眠嘿嘿

     

-Asperger

为了让你记住迭代你​​在数组中声明的相同数量的索引,你应该#define你的数组长度如下:

#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
}

答案 3 :(得分:-1)

一切都那么简单:

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

main() {
    char myArray[10];
    memset(myArray, 'a', 5);
    myArray[5] = '\0';
    for(char *c = myArray; *c; ++c) {
        putchar_unlocked(*c);
        putchar('\n');
    }
}