我想用二维数组显示输出。我打印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;
}
因此。我希望你能帮助我思考如何去做。 非常感谢你!
答案 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
#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;
答案 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"
,或者只使用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}, .......}
。
答案 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个警告代码的习惯。