Я пытаюсь передать массив строк в функцию для вывода на экран.Первая строка печатается нормально.Последующие строки, однако, являются нулевыми и, следовательно, ничего не печатают.Если я получу указатель непосредственно на первую строку вместо массива, я могу увеличить его на размер массива символов, и все будет напечатано правильно.Если я пытаюсь увеличить указатель на массив строк, где я получаю ноль.Почему это происходит и как я могу правильно распечатать массив.Также я использую Visual Studio, если это вообще на него влияет, учитывая используемый стандарт C.
Я не думаю, что ошибка связана с вызовом, поскольку переданный указатель указывает на адрес массива строк.
//How I'm passing the array
char headings[4][20] = { "Name", "Record Number", "Quantity", "Cost"};
int widths[4] = {20, 20, 20, 20 };
headers(&headings[0][0], &widths[0], 4);
//Function
void headers(char **heads, int *columnWidths, int noOfColumns) {
int headLength = 0;
printf("|");
for (int i = 0; i < noOfColumns; i++) {
headLength += printf("%*s|", *columnWidths, heads);
columnWidths++;
heads ++;
}
printf("\n");
for (int i = 0; i < headLength+1; i++) {
printf("-");
}
printf("\n");
}
Это вывод, который я получаю:
| Name| | | |
, но я ожидаю этот вывод:
| Name| Record Number| Quantity| Cost|