C程序二维数组char值输出为2个字符

时间:2017-02-16 05:15:01

标签: c arrays multidimensional-array type-conversion

我想用二维数组显示输出。我打印10,11,12的值,但我只显示一个数字0,1,2。不知道。如何使用char数据类型输出。我不想更改char值,因为我需要将其他X和Y分配给数字[2] [1] =' X&#39 ;;

我的代码在这里:

#include <stdio.h>

int main(void){
    char number[3][4] = {
        {'1','2','3','4'},
        {'5','6','7','8'},
        {'9','10','11','12'}
    };

    printf("%c",number[2][1]);

    return 0;
}

因此。我希望你能帮助我思考如何去做。 非常感谢你!

5 个答案:

答案 0 :(得分:1)

你是用字符串混合字符,它们不一样。在c中,单引号用于获取字符的ascii值,它被称为字符常量。

当你用单引号包装多个字符时,它被称为多字符常量,它的值是实现定义的,但它仍然是整数而不是字符串。

如果你想拥有一个字符串数组,那就像这样

#include <stdio.h>

int main(void)
{
    const char *number[3][4] = {
        {"1",  "2",  "3",  "4"},
        {"5",  "6",  "7",  "8"},
        {"9", "10", "11", "12"}
    };
    printf("%s\n", number[2][1]);
    return 0;
}

另请注意,"%s"而不是"%c"来打印字符串。

答案 1 :(得分:1)

将数字插入数组而不带引号。 char可以保存-128 to 127中的数字 并使用%d代替%c

&#13;
&#13;
#include <stdio.h>

int main(void){
char number[3][4] = {
    {1,2,3,4},
    {5,6,7,8},
    {9,10,11,12}
};

printf("%d",number[2][2]);

return 0;
}
&#13;
&#13;
&#13;

答案 2 :(得分:1)

我建议

//如果字节不是 定义如此短暂

   byte c[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
在这种情况下,

char可能会造成混淆。

答案 3 :(得分:0)

只需创建一个char数组:

char number[3][4][3];

允许3行和4个字符串列,每个字符串的最大长度为3,包括空字节\0

使用'11'之类的内容无效,因为这不是单个字符,因为char需要。您需要制作这些字符串,例如"11",或者只使用int11。如果您决定使用字符串,则格式说明符必须为%s,因为您要打印char[]char*%c用于打印char

您的程序可能如下所示:

#include <stdio.h>

#define ROWS 3
#define COLS 4
#define STRSIZE 3

int main(void){
    char number[ROWS][COLS][STRSIZE] = {{"1","2","3","4"},
                                        {"5","6","7","8"},
                                        {"9","10","11","12"}};

    printf("%s",number[2][1]);

    return 0;
}

注意:使用const char *number[ROWS][COLS]更灵活,因为您可以拥有任何字符串长度。您也可以只声明一个2D整数数组,然后您就可以只使用int number[ROWS][COLS] = {{1, 2, 3, 4}, .......}

答案 4 :(得分:0)

在C / C ++语言中,char数据类型可以保存-128到+127的值范围。该值可以存储为char c ='A';或char c = 65; (使用单引号字符或字符的ASCII值)。所以你不能在char变量中存储'10'。如果你需要存储ASCII值10(换行'\ n'),你可以使用@Sagar V的答案。如果你需要存储文本10(“10”注意不是单引号),你可以使用@Iharob Al Asimi的答案。

在您的代码中,您创建的是一个二维char数组。它不能保存文本(字符串或char *)值。只需看看编译器警告。养成编写0个警告代码的习惯。