【发布时间】:2022-01-07 20:01:12
【问题描述】:
我不知道为什么在 'u' 之后应该继续的 # 进入错误的行
#include <stdio.h>
#define LEN 5
int inputNumber() {
int size;
printf("Input Size: ");
scanf("%d",&size);
printf("===\nTriangle Size is %d\n===\n",size);
return size;
}
void printTriangle(int size, char ch[]) {
for(int i = 0; i < size; i++)
{
for(int j = 0; j <= i; j++)
{
if(j<=LEN)
printf("%c ",ch[j]);
if(j>LEN)
printf("# ");
}
printf("\n");
}
}
int main() {
char arr_char[LEN] = {'a','e','i','o','u'};
int number;
number = inputNumber();
printTriangle(number,arr_char);
return 0;
}
我以前曾经问过同样的代码,但我想尝试使用 if-else 而不是 ? : 因为我还没有在课堂上学过,所以我想知道是否可以使用 if-else 之类的基本东西。
【问题讨论】:
-
arr_char有 5 个元素,您可以访问的最后一个索引是4。你的代码超出了这个范围。 -
我想做的是,如果它超出数组中的元素,然后打印出'#'
-
是的,但是您的代码超出了数组的末尾。你需要解决这个问题。
-
哦,好吧。等一下让我修一下。编辑:现在看到了
-
在数组后面的内存中可能有一个
\n字符。当您打印arr_char[5]时,您会打印它。它还可以打印笑脸或其他“随机”字符。这就是未定义行为的作用......
标签: arrays c loops for-loop undefined-behavior