打印字符而不是数字时(C 程序)
While printing characters instead of numbers (C program)
我正在尝试打印一个数字的升序序列,如下所示:00 01, 00 02, 00 03,..., 00 99, 01 02, ..., 97 99, 98 99
。不幸的是,C 程序正在打印来自 ASCII table 的特殊字符,而在数字 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();
}
我能想到的最简单的解决方案是对每个最大数字使用一个 for 循环。例如,对于最多 2 位数字 (00-99):
#include <stdio.h>
int main()
{
int i, j;
for(i=0; i<9; i++)
{
for(j=0; j<9; j++)
{
printf("%d%d\t", i, j);
}
}
}
如果你想要更多的数字,你只需要添加更多的 for 循环并添加更多的 %d 到 printf。
在 comb()
你有:
d = 1 ;
您打算去的地方:
d = '1' ;
请注意,在 comb()
中,您还明确分配 c
和 d
覆盖传递的参数。因此这些参数是不必要的。这样删除它们:
void comb(char a, char b)
{
char c, d ;
...
}
生成相同的结果。
我正在尝试打印一个数字的升序序列,如下所示:00 01, 00 02, 00 03,..., 00 99, 01 02, ..., 97 99, 98 99
。不幸的是,C 程序正在打印来自 ASCII table 的特殊字符,而在数字 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();
}
我能想到的最简单的解决方案是对每个最大数字使用一个 for 循环。例如,对于最多 2 位数字 (00-99):
#include <stdio.h>
int main()
{
int i, j;
for(i=0; i<9; i++)
{
for(j=0; j<9; j++)
{
printf("%d%d\t", i, j);
}
}
}
如果你想要更多的数字,你只需要添加更多的 for 循环并添加更多的 %d 到 printf。
在 comb()
你有:
d = 1 ;
您打算去的地方:
d = '1' ;
请注意,在 comb()
中,您还明确分配 c
和 d
覆盖传递的参数。因此这些参数是不必要的。这样删除它们:
void comb(char a, char b)
{
char c, d ;
...
}
生成相同的结果。