Как поместить целочисленное значение в массив символов? Я хочу, чтобы число 1234 было в массиве символов. Я не могу прочитать это из приглашения - PullRequest
0 голосов
/ 30 марта 2012

Я новичок в C, и я хорошо учился в своем классе (онлайн) до последней пары программ. Они усложняются, а я не очень стратег. Но я пытаюсь и я расстроен.

Я работал над этим некоторое время (он просрочен), и моя конечная цель - преобразовать число в слова для зарплаты.

То, что я пытаюсь сделать здесь, - это преобразовать двойное значение в int и поместить int в массив char, чтобы в конечном итоге «сумма массива» читалась (если оплата составляла $ 1234,56) 001234. Тогда я подумал что я мог бы сделать, если бы или случаи для каждой позиции (hundThous = 0, tenThous = 0, Thous = 1 и т. д.), чтобы преобразовать его. Я застреваю здесь, хотя и нуждаюсь в помощи.

Как поместить значение 1234 в массив char?

Кроме того, в функции выше я назвал "checkWriter (money);" где деньги удваиваются. Это верно? Я просто хочу, чтобы она вызывала эту функцию, чтобы печатать преобразованные двойные слова.

    void checkWriter(double z)
    {
       double v;
       int w, y, cents;
       int b, c, x, length;
       char array[SIZE];
       char amount[SIZE]; /*size = 7, our largest value will be in the hundred thousands*/

       v = 100 * z; /*make z a whole number*/

       w = ((int)v); /*convert z to an integer w*/

       cents = w % 100; /*cents equals the remainder of w/100*/

       y = (w - cents)/100; /*y equals the converted integer minus cents, divided by 100*/

       sprintf(array, "%-6d", y); /* ATTEMPTING TO PUT y INTO array (saw this on google) */
       printf("%s\n\n", array); /* Just wanted to see if it worked.  It didn't.  I got -2big
                                   number.*/

       length = strnlen(array); /*find length of the value in array*/

       array[length] = '\0'; /* affix terminating null character to array */

       b = SIZE - length - 1; /* b is amount of zeroes needed */

       for(c = 0; c < length - 1; c++) { /* loops, plugging zeroes in amount until b=c, 
                                            then attaches array to amount */
          if(b == c) {
             amount[c] = '\0';
             strcat(amount, array);
          }
          else {
             amount[c] = '0';
          }
       }

       printf("%s\n\n", amount); /* Checking to see if it worked. Nope.  All zeroes. And 
                                    sometimes extra symbols at the end*/

       return;
    }

Был бы очень признателен за помощь. Спасибо!!!

1 Ответ

0 голосов
/ 30 марта 2012

Пожалуйста, посмотрите на это и это статьи.По сути, вы конвертируете double в целое с округлением, используя

(int)double_value;

, а затем конвертируете его в массив char, используя

snprintf(arr, length, "%d", your_integer);
...