[英]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];
它允许3
行4
列字符串,并且每个字符串的最大长度为3
,包括空字节\\0
。
使用'11'
类'11'
字符无效,因为这不是char
要求的单个字符。 您需要制作这些字符串,例如"11"
,或仅使用int
值11
。 如果决定使用字符串,则格式说明符必须改为%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.