打印字符的ASCIVALUE会产生意外的输出
我知道,在stackoverflow上有一些解决方案。但我不知道为什么我的一个不行打印字符的ASCIVALUE会产生意外的输出,c,char,printf,C,Char,Printf,我知道,在stackoverflow上有一些解决方案。但我不知道为什么我的一个不行 char *ink[90] strcpy(ink, "hi"); printf("stepiii %c \n",ink[0] ); printf("ascii %d\n",ink[0] ); 而不是“ascii 104”返回错误值,如 “ascii 26984” 我做错了什么?您正在创建指针数组并将字符复制到其中。您
char *ink[90]
strcpy(ink, "hi");
printf("stepiii %c \n",ink[0] );
printf("ascii %d\n",ink[0] );
而不是“ascii 104”返回错误值,如
“ascii 26984”
我做错了什么?您正在创建指针数组并将字符复制到其中。您需要一个
char
数组,并将字符复制到其中,如下所示
char ink[90]
strcpy(ink, "hi");
printf("stepiii %c \n", ink[0]);
printf("ascii %d\n", ink[0]);
您所做的是错误的,因为ink[0]
是数组中第一个指针的地址,您使用strcpy()
初始化了数组,这将触发不兼容的指针类型警告,启用编译警告以避免此情况
它在您的代码中调用未定义行为的方式,您的程序可能会崩溃或发生任何事情。打印的值没有意义。您正在创建指针数组并将字符复制到其中。您需要一个
char
数组,并将字符复制到其中,如下所示
char ink[90]
strcpy(ink, "hi");
printf("stepiii %c \n", ink[0]);
printf("ascii %d\n", ink[0]);
您所做的是错误的,因为ink[0]
是数组中第一个指针的地址,您使用strcpy()
初始化了数组,这将触发不兼容的指针类型警告,启用编译警告以避免此情况
它在您的代码中调用未定义行为的方式,您的程序可能会崩溃或发生任何事情。打印的值没有意义。在代码中
char *ink[90]
这是错误的。您不需要指针数组,如代码段其余部分所示。换成
char ink[90]= {0};
如果您对以前的输出感到疑惑,则调用该代码。因此,输出本质上是无意义的,不能被信任。在您的代码中
char *ink[90]
这是错误的。您不需要指针数组,如代码段其余部分所示。换成
char ink[90]= {0};
如果您对以前的输出感到疑惑,则调用该代码。因此,输出基本上没有意义,不能信任。阅读警告。…
strcpy(墨水,“hi”)代码>???也不是说%d
是字符
参数的错误格式说明符。使用%hhd
@Olaf默认参数升级不解决这个问题吗?@SouravGhosh:基本上是的,但格式字符串类型应始终与参数类型匹配。不过,我不确定编译器是否会对此发出警告。@Olaf我也是这么想的。谢谢你的回复。:)阅读警告……strcpy(墨水,“hi”)代码>???也不是说%d
是字符
参数的错误格式说明符。使用%hhd
@Olaf默认参数升级不解决这个问题吗?@SouravGhosh:基本上是的,但格式字符串类型应始终与参数类型匹配。不过,我不确定编译器是否会对此发出警告。@Olaf我也是这么想的。谢谢你的回复。:)