You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言如何实现字符串数组的纵向逐列打印输出

字符串数组纵向逐列打印实现方法

你之前写的单字符串纵向打印,核心是遍历单个字符串的每个索引位,逐行输出对应字符。要实现多字符串同索引字符拼接为单行的效果,只需要调整循环层级,加一层遍历字符串数组的逻辑即可。

核心逻辑

  • 外层循环控制列索引,也就是字符在所属字符串里的位置,从0开始计数,循环上限取所有待打印字符串的最大长度,避免访问短字符串的越界内存
  • 内层循环遍历数组里的每一个字符串,输出当前列索引对应的字符
  • 每遍历完一列(内层循环结束),打印换行符开始下一行输出

通用兼容不同长度字符串的实现代码

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

int main() {
    char listOfTest[2][10] = {"testing1", "quizzing"};
    // 计算数组内字符串总数
    int strCount = sizeof(listOfTest) / sizeof(listOfTest[0]);
    // 找到最长字符串的长度,作为外层循环的上限
    int maxLen = 0;
    for (int i = 0; i < strCount; i++) {
        int curLen = strlen(listOfTest[i]);
        maxLen = curLen > maxLen ? curLen : maxLen;
    }

    // 逐列拼接打印
    for (int col = 0; col < maxLen; col++) {
        for (int strIdx = 0; strIdx < strCount; strIdx++) {
            // 仅当当前字符串长度覆盖当前列索引时输出字符,避免越界
            if (col < strlen(listOfTest[strIdx])) {
                printf("%c", listOfTest[strIdx][col]);
            }
            // 如果需要对齐输出,短字符串缺失的位置可以补空格,放开下面注释即可
            // else {
            //     printf(" ");
            // }
        }
        printf("\n");
    }
    return 0;
}

固定长度场景简化写法

如果你能确定数组里所有字符串长度完全一致,可以省略长度计算和越界判断,直接按固定长度循环即可。针对你给出的示例场景,简化代码如下:

#include <stdio.h>

int main() {
    char listOfTest[2][10] = {"testing1", "quizzing"};
    // 按示例字符串实际长度设置循环上限即可得到预期输出
    for (int col = 0; col < 7; col++) {
        printf("%c%c\n", listOfTest[0][col], listOfTest[1][col]);
    }
    return 0;
}

以上代码编译运行后,输出结果和你给出的预期效果完全匹配。


内容的提问来源于stack exchange,提问作者LearningLinux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 06:06:26