почему 10 становится: в программе c - PullRequest
0 голосов
/ 04 ноября 2018
char **array;        
char *x_ptr = &array[0][0];
int rowcount = 0;
    for (int i = 0; i < row; i++)
    {


            for (int j = 0; j < column; j++)
            {
                if (j == 0) {
                    rowcount += 1;
                    *(x_ptr +( i*column + j)) = rowcount+'0';
                }
                else {
                    *(x_ptr +( i*column + j)) =  0;
                }

            }
     }

При выполнении этого цикла в 10-й раз, почему он хранит значение int для 10 в виде символа: Текущий результат 8,9,:,;, <, =,>

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018
  1. Вы должны использовать char array[10][10];, а не char **array;
  2. ':' == '9' + 1

Может работать следующее code:

#include <stdio.h>

int main()
{
    int row = 10, column = 10;
    char array[10][10];
    int rowcount = 0;
    for (int i = 0; i < row; ++i)
        for (int j = 0; j < column; ++j)
            if (j == 0)
                array[i][j] = ++rowcount + '0';
            else
                array[i][j] = 0;

    for (int i = 0; i < row; ++i) {
        for (int  j = 0; j < column; ++j)
            printf("%c\t", array[i][j]);
        printf("\n");
    }
    return 0;
}
0 голосов
/ 04 ноября 2018

ASCII для '0' - 48. Если вы добавите 10 к нему, вы получите 58, что является ASCII для ':'.

...