c - C 中的二维字符串

标签 c arrays multidimensional-array c-strings

几周前我刚刚开始学习C,通过阅读一本关于C的书。每章最后都有一些练习,其中有一个练习我无法弄清楚为什么我的代码不起作用。任务是从用户那里获取一些字符串,这些字符串将输入一个二维数组。然后,向后打印每个字符串。

例如,

用户将输入以下单词:sleephellogreat

输出将为:peelsollehtaerg

它必须是一个二维数组(这就是本章的内容)。

这是我的代码:

#include <stdio.h>

int main()

{
    char string[5][6]; 
    int i, j;

    for(i=0; i<5; i++)
    {
        printf("please enter a string:\n");
        scanf("%s", &string[i]);
    }

    printf("\n");

    for(i=0; i<5; i++)
    {
        for(j=6; j<=0; j--)
        {
            printf("%c", string[i][j]);
        }
        printf("\n");
        j=6;

    }

return 0;

}

提前谢谢您!

最佳答案

%s 需要一个 char *,您发送一个 char (*)[6]

scanf("%s", &string[i]); => scanf("%5s", string[i]);

您的 for 循环与 j 是错误的,您打印了 nul 终止字节。您应该使用 while 循环,这种情况在 C 中更惯用。

for (i = 0; i < 5; i++) {
    j = 5;
    while (j-- > 0) {
        printf("%c", string[i][j]);
    }
    printf("\n");
}

关于c - C 中的二维字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41483472/

相关文章:

JavaScript - 相同行和列中值的总和

c - 监听多个端口并接受连接

c - 为什么我的C程序在输入数字后无法完成代码?

c++ - 如何让用户使用 openAL 选择录音设备?

Javascript数组,删除相同的组合数字但顺序不同

java - 使用 ArrayList<int[][]> 时如何查看元素是否已在列表中?

c - 为什么即使我刚刚编译了源代码,我的 makefile 也会重新编译?

javascript - 如何将 true 或 false 的 const 列表排序为两个单独的数组,一个包含 true 对象,另一个包含 false 对象?

java - Java 中的循环中的循环

java - 寻找二维数组中的特定元素