我尝试了很多东西,但我无法找到解决问题的方法。我试图逐个打印数组的内容,但它崩溃了。如何在每次迭代后打印出每个索引对应的字母?
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.
答案 0 :(得分:2)
arr
是包含char
类型元素的数组 - 你应该为每个元素分配'a'而不是“a”(后者在内存中给你一些地址 - 即地址在哪里存储“a”。
%s
用于打印以空字符结尾的字符串。由于数组中的元素类型,请使用%c
。
PS。像这样更好地使用main:
int main(void)
{
...
return 0;
}
答案 1 :(得分:2)
您的主要功能没有返回值。你需要使用int或void。
arr[i] = "a";
为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]);
}
}
答案 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');
}
}