将int转换为char

时间:2016-12-02 01:12:53

标签: c

任务是使用int获取scanf("%d")然后使用printf("%с")再次打印它,而不使用像atoi,itoa这样的标准函数。我知道我需要将所有数字除以加{{1} char和打印它,但我怎么能分开它。我想到了用于分割\0number%10 + /0以减少1个字符的数字的循环。 因此代码看起来应该像这样平滑

number/10

}

同样可以有负数,所以我需要一些#include <conio.h> #include <stdio.h> main(void) { int number,reserve ; char Array[50]; scanf_s("%d",&number); if (number > 0 || number == 0) { do { reserve = number % 10; printf("%c", reserve + '/0'); number /= 10; } while (number != 0); } else { number *= -1; printf("-"); do { reserve = number % 10; printf("%c", reserve + '/0'); number /= 10; } while (number != 0); } _getch(); return 0; 语句来检查它是否为负数,如果它是循环应该避免它,所以我们不会得到像if < / p>

所以我不知道循环是否正确(希望有人能解决它并解释我应该如何)。等待你的建议。

2 个答案:

答案 0 :(得分:1)

该行的一个副作用

number = number % 10;

是您丢失了number的原始值。所以当你去做

number = number/10;

总是会得到零值。要解决此问题,请将原始值存储在其他位置,或使用其他变量进行字符转换(模10,然后加\0)。

此外,您的循环需要重新检查。当除法的结果为零(即没有更多的数字要打印)时,这个模数加法,加法\0,除,重复,应该停止。另一件需要考虑的事情是:这些数字的打印顺序是什么?

我会留给您,以弄清楚如何确定int的值是否大于或小于零,因为您没有在此代码段中尝试过。

答案 1 :(得分:0)

这将有助于您,为您的目的采纳

#include <stdio.h>

int main() {

    int a;
    int i = 0;
    int str_size = 0;   
    char str[11] = {};
    char tmp;

    scanf("%d", &a);

    while (a) {
        str[str_size++] = a % 10 + '0';
        a /= 10;
    }

    str_size--;

    while (i < str_size) { // rewind 
        tmp = str[i];
        str[i++] = str[str_size];
        str[str_size--] = tmp;
    }
    printf("%s", str);

    return 0;
}