gpt4 book ai didi

c - 在 C 中打印出一个没有预定长度的数组

转载 作者:行者123 更新时间:2023-11-30 20:17:19 26 4
gpt4 key购买 nike

我想在 C 中打印出整个数组。我尝试使用 sizeof 来确定数组的长度,以便使用 for 循环打印它,但它没有'无法工作并返回错误。我做错了什么,我还可以尝试吗?

// The items in the array are determined by user input
int length = (sizeof(my_array) / sizeof( my_array[0])) + 1;
printf("%d\n", length);
for(int i = 0; i < (sizeof(my_array) / sizeof( my_array[0])) + 1; i++)
{
printf("%s\n", my_array[i]);
}

最佳答案

代码正在访问超出数组末尾的数据。这会导致未定义的行为:https://en.wikipedia.org/wiki/Undefined_behavior .

您正在计算数组的元素数量并加 1。您需要删除 + 1,使其看起来像:

for(int i = 0; i < (sizeof(my_array) / sizeof( my_array[0])); i++)

我只是稍微修改了您的代码并从中制作了一个独立的示例:

#include <stdio.h>

int main() {
char *my_array[] = {"abc", "def"};
int length = (sizeof(my_array) / sizeof(my_array[0]));
printf("%d\n", length);
for (int i = 0; i < length; i++) {
printf("%s\n", my_array[i]);
}
return 0;
}

它向控制台输出以下内容:

2
abc
def

因此,删除 + 1 时会打印所有元素。

关于c - 在 C 中打印出一个没有预定长度的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58152212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com