c - 打印字符而不是数字时(C 程序)
问题描述
我正在尝试打印这样的数字升序:00 01, 00 02, 00 03,..., 00 99, 01 02, ..., 97 99, 98 99
. 不幸的是,当 C 程序在数字(最后一个数字)中打印 ASCII 表中的特殊字符时d
,它应该只达到数字 9。如何使循环不打印 ASCII 字符而只打印数字?我不能使用printf()
.
#include<unistd.h>
void print_character_comma(char a, char b, char c, char d)
{
write(1, &a, 1);
write(1, &b, 1);
write(1, " ", 1);
write(1, &c, 1);
write(1, &d, 1);
if (!(a == 57 && b == 56 && c == 57 && d == 57))
write(1, ", ", 2);
}
void comb(char a, char b, char c, char d)
{
while (a <= 57)
{
while (b <= 56)
{
c = a;
while (c <= 57)
{
d = 1;
while (d <= 57)
{
print_character_comma(a, b, c, d);
d++;
}
d = 48;
c++;
}
c = 48;
b++;
}
b = 48;
a++;
}
}
void ft_print_comb2(void)
{
comb('0', '0', '0', '0');
}
int main()
{
ft_print_comb2();
}
解决方案
在comb()
你有:
d = 1 ;
您打算在哪里:
d = '1' ;
请注意,comb()
您还显式分配c
和d
覆盖传递的参数。因此这些参数是不必要的。因此删除它们:
void comb(char a, char b)
{
char c, d ;
...
}
产生相同的结果。
推荐阅读
- android - Google play 游戏服务 : 保存游戏,创建新快照
- sql - 我无法解决与子查询相关的问题
- mysql - mysql数据的物理磁盘重写
- encryption - 是否可以使用 SHA-256 使用 PBKDF2 导出 128 位 AES 密钥
- c++ - 如何在 c++11 中使用 std::vector 使其更快?
- c - HAL_UART_Transmit_IT 发送数据两次
- spring-security - 需要数据库中的数据以用于 SpEL 方法级安全性
- asp.net-core - AuthorizationHandlerContext.User 在 ASP.NET Core 中的哪里创建?
- javascript - 在跟踪过程中完成该过程后想要模糊图像
- forms - xamarin 表单外壳无法导航到嵌套视图