C печать 2D Array - PullRequest
       9

C печать 2D Array

0 голосов
/ 23 июня 2018

Я пытаюсь напечатать строку символов из двумерного массива, используя randomNum.Вот что у меня есть:

int randomNum = 0;
char names[2][] = { {"Joe\0"},{"John\0"} };
printf("%s ",names[randomNum][]);

Это не работает, однако.

1 Ответ

0 голосов
/ 24 июня 2018

Вот пример кода того, что, по моему мнению, должно быть реализовано:

#include <stdio.h>
#include <stdlib.h>

#define NUMBER_OF_STRINGS  2

int main (int argc, char *argv[]) 
{
    int randomNum = 0;

    /* The capacity of the array is to hold up to 2 strings*/
    char *names[NUMBER_OF_STRINGS] = { "Joe",
                                        "John"};
                /*
                *
                *  names[0][0] = 'J' -> first element of names[0]  -  J
                *  names[0][1] = 'o' -> second element of names[0] -  o
                *  names[0][2] = 'e' -> third element of names[0]  -  e
                *
                *  names[1][0] = 'J' -> first element of names[0]  -  J
                *  names[1][1] = 'o' -> second element of names[0] -  o
                *  names[1][2] = 'h' -> third element of names[0]  -  h 
                *  names[1][3] = 'n' -> third element of names[0]  -  n 
                *
                */

    /*Here we pass the pointer of the array of strings and we index the first string*/                                          
    printf("%s \n", names[randomNum]);

    /*Here is how to access each of the elements separetly*/
    printf("Here we print the name Joe character by character\n");
    printf("%c\n", names[0][0]);
    printf("%c\n", names[0][1]);
    printf("%c\n", names[0][2]);

    printf("Here we print the name John character by character\n");
    printf("%c\n", names[1][0]);
    printf("%c\n", names[1][1]);
    printf("%c\n", names[1][2]);
    printf("%c\n", names[1][3]);

    return (0);
}

Для хранения одной строки вам нужно имя char * (символьный указатель). Для хранения нескольких строк необходимо использовать имена символов **. Что эквивалентно именам char * [NUMBER_OF_STRINGS]. Двойной указатель означает, что мы создаем указатель на пробел в памяти, который имеет указатель того же типа. Другими словами, в данном случае это указатель на массив строк.

...