繁体   English   中英

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

[英]C program two dimensional array char value output for 2 character

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

我的代码在这里:

#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;
}

所以。 希望您能帮助我思考如何做。 非常感谢!。

您正在将字符与字符串混合使用,它们是不同的。 在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"来打印字符串。

将数字插入不带引号的数组中。 char可以容纳-128 to 127数字,并且还可以使用%d代替%c

 #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; } 

我建议

//如果未定义字节太短

   byte c[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

char在这种情况下可能会造成混淆。

只需创建一个3D char数组:

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

它允许34列字符串,并且每个字符串的最大长度为3 ,包括空字节\\0

使用'11''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}, .......}为整数。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM