字符数组未使用 %s 打印

标签 c arrays char base-conversion

1.当我尝试显示 conv 时它没有显示任何内容,但是当我使用下标打印一个元素时我能够看到内容。
2.十进制转二进制、八进制、十六进制的程序

#include<stdio.h>
int main() 
{  
    convbase(23,2);  
    return 0;  
}  
int convbase(int num, int base)  
{  
    char conv[33] = {' '};  
    char *ptr = &conv[32];  
    conv[32] = '\0';  
    do  
    {  
            *--ptr = "0123456789ABCDEF"[num % base];  
             num = num/base;  
    }while(num);  
    if(base == 16)  
    {  
        *--ptr = 'x';  
        *--ptr = '0';  
    }  
    if(base == 8)  
    {  
        *--ptr = '0';  
    }  
    printf("Decimal to base %d is :\t%s\n",base,conv);  
    return 0;  
}  

最佳答案

改变

printf("以 %d 为基数的十进制为:\t%s\n",base,conv);

printf("以 %d 为基数的十进制为:\t%s\n",base,ptr);

将内容(ptr - 到字符串末尾)移动到转换数组的开头

另一种替代方法是从 conv 的末尾开始写入,而不是从头开始写入,然后在完成后调用 strrev() 来反转它。

printf("以 %d 为基数的十进制为:\t%s\n",base,strrev(conv));

关于字符数组未使用 %s 打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14721504/

相关文章:

C-排序大型2D整数数组的最快方法

string - 重写 Haskell 中 String/Char 的 show 方法

在 C 中比较用户输入的字符

C - 检查是否分配了 Integer

c - 在 C 中,如何计算无符号数的负数

javascript - 在 foreach 循环中使用两个数组值

python - 获取 NumPy 数组(或列表)的 "slices"长度而不实际切片

java - 引用持久性并传递可变数量的数组

c++ - C++错误: expected ',' or ';' before '{' token when their is

c - 是否可以使用字符串中的名称定义变量