2016-01-11 2 views
-3

Итак, я попытался получить число (int) от пользователя и переместить число из целого числа в пустую строку, и мне нужно напечатать его как строку. Помогите?Изменить int на некоторую строку

#include <stdlib.h> 
#include <stdio.h> 
#include <time.h> 
#include <string.h> 
#define CHAR_LENGTH 100 
int main() 
{ 
    int num =0,units=0 ,length=0,counter =0,i=0 ; 
    char charNumber[CHAR_LENGTH]={0}; 
    printf("enter some number(positive or negative)\n"); 
    scanf("%d",&num); 
    while (num != 0) 
    { 
     units =0; 
     units = num %10; 
     num = num/10; 
     charNumber[i]= (char)units; 
     counter++; 
     i++; 
    } 
    printf("%s",charNumber); 
    return 0; 
} 
+1

и что вопрос? –

+1

'charNumber [i] = (char) единиц + '0''; –

+0

Вам нужен ограничитель строки '' \ 0'' –

ответ

2

Вам нужно написать алгоритм самостоятельно? Если нет, используйте функцию itoa функции стандартной библиотеки C (хотя она не такая стандартная, но некоторые библиотеки включают ее).

Вы также можете использовать sprintf так:

int value = 2016; 
char my_string[64]; 

snprintf(my_string, 64, "%d", value); 

Проверьте эти ссылки, а также:

+0

или http://linux.die.net/man/3/snprintf –

+0

@EdHeal, я просто редактировал свой ответ, чтобы добавить это :) – ForceBru

+3

За исключением того, что itoa - это * не * стандартная функция C. snprintf является лучшим способом в C. – mikedu95

1

три проблемы:

(1) Отрицательные номера. if (num < 0) { printf("-"); num = -num; }
(да, я игнорировал очевидный угловой случай)

(2) Вы печатать цифры в обратном порядке.

(3) Вам нужно добавить '0', как и в charNumber[i]= (char)units + '0'

Смежные вопросы