数组元素被反向打印出来

Array elements being printed out in reverse

我想打印出数组中的所有元素来调试我的程序。

这是打印出数组所有元素的for循环

for(int i = 0; i <= 9; i++) {
        printf("Words: %s\n", &words[i]);
    }

我有一个包含 const char 数组的头文件。这是任务所必需的。 我知道将它们放在头文件中可能不是一个好的做法。

const char *words[10] = {'foo', 'bar', 'hello', 'world'};

我 运行 这段代码的输出非常奇怪,因为它向后打印所有内容。

Keywords: oof
Keywords: rab
Keywords: olleh
Keywords: dlrow

有时,它甚至会在每个关键字的末尾随机添加句号。 为什么是这样?除了那个,我什么都没写。

初学者使用字符串文字而不是字符文字

const char *words[10] = {"foo", "bar", "hello", "world"};

注意数组中从索引4开始的所有元素都是用空指针初始化的

只需使用

for(int i = 0; words[i] != NULL && i < 10; i++) {
        printf("Keywords: %s\n", keyWords[i]);
                                 ^^^^^^^^ 
    }

这是一个演示程序

#include <stdio.h>

int main(void) 
{
    const char *words[10] = {"foo", "bar", "hello", "world"};

    for ( size_t i = 0; words[i] != NULL && i < 10; i++ ) puts( words[i] );

    return 0;
}

它的输出是

foo
bar
hello
world

注意游览代码段有错别字。使用名称 wordskeywords 来命名数组。

您应该只在编写 scanf 而不是 printf 时使用“&keywords”。 执行以下操作:

printf("Keywords: %s\n", keyWords[i]);