C 打印字符串显示符号
我正在尝试使用指针编写一个ITOA(整数到数组)函数 这就是我目前得到的。我调试过了,效果很好。问题是,打印本身不起作用。我正在添加两个屏幕截图 如果你能帮忙,我将不胜感激C 打印字符串显示符号,c,arrays,string,itoa,C,Arrays,String,Itoa,我正在尝试使用指针编写一个ITOA(整数到数组)函数 这就是我目前得到的。我调试过了,效果很好。问题是,打印本身不起作用。我正在添加两个屏幕截图 如果你能帮忙,我将不胜感激 int num_length(int number) { int count = 0; while (number > 0) { count++; number /= 10; } return count; } void itoa(int n
int num_length(int number)
{
int count = 0;
while (number > 0)
{
count++;
number /= 10;
}
return count;
}
void itoa(int number, char *strptr)
{
int number_len = num_length(number);
char *start = strptr;
strptr += number_len - 1;
while (strptr >= start)
{
*strptr = number % 10;
number /= 10;
strptr--;
}
}
void print_string(char *strptr)
{
while (*strptr != '\0')
{
printf("%c", *strptr);
strptr++;
}
}
void main(void)
{
int number;
char number_in_string[N] = { '\0' };
char *strptr = &(number_in_string[0]);
printf("Enter a number: ");
scanf_s("%d", &number);
itoa(number, strptr);
print_string(number_in_string);
getch();
}
如果您试图获取一个数字字符数组(从
print_string
(a)函数可以看出),则需要适当调整值:
*strptr = number % 10 + '0';
根据调试输出('\x2'
,'\x5'
,'\x5'
),您可以正确获取数字的各个数字,但这些是二进制值,而不是字符表示
将前者转换为后者需要添加'0'
(例如,如果使用ASCII,则为0x30)。C保证数值是连续的,因此这是安全的
(a) 。。。顺便说一下,可以用一个简单的
printf("%s", number_in_string);
在您的代码>主< /代码>函数.< /p>不要垃圾邮件标签-这不是C++。<代码> *STRPTR =号码% 10;<代码>->
*strprtr=(数字%10)+“0”代码>打印字符串:printf(“%s”,我的\u null\u终止\u str)只是一个想法。@Maya“我调试过,效果很好。”好吧,那怎么了?