小编noo*_*der的帖子

为什么这个 C 代码将一个 2D 数组中的字符串与下一个一起打印出来?

以下代码用于打印二维数组中的字符串元素。由于所有字符串中的最大长度为 5,因此我将其初始化为最大元素长度 5。

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

int main()
{
    char arr[4][5] = {"abcde", "efghi", "ijklm", "nop"};
    for(int i = 0; i < 4; i++){
        printf("String: \"%s\" with length: %d\n", arr[i], (int) strlen(arr[i]));
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但结果是

字符串:“abcdeefghiijklmnop”,长度:18
字符串:“efghiijklmnop”,长度:13
字符串:“ijklmnop”,长度:8
字符串:“nop”,长度:3

这不是想要的结果,因为我希望它们单独打印。

现在,我将数组arr可以存储的字符串的最大大小更改为 6。

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

int main()
{
    char arr[4][6] = {"abcde", "efghi", "ijklm", "nop"};
    for(int i = 0; i < 4; i++){
        printf("String: \"%s\" with length: %d\n", arr[i], (int) strlen(arr[i]));
    }
    return 0; …
Run Code Online (Sandbox Code Playgroud)

c arrays string pointers multidimensional-array

0
推荐指数
1
解决办法
78
查看次数

标签 统计

arrays ×1

c ×1

multidimensional-array ×1

pointers ×1

string ×1