【发布时间】:2019-02-11 14:03:38
【问题描述】:
我正在尝试将一个字符串数组传递给一个函数以打印到屏幕上。第一个字符串打印正常。但是,后续字符串为空,因此不打印任何内容。如果我将指针直接指向第一个字符串而不是数组,我可以将它增加字符数组的大小,并且所有内容都可以正确打印。如果我尝试增加指向字符串数组的指针,这就是我得到空值的地方。为什么会发生这种情况以及如何正确打印数组。另外,考虑到它使用的 C 标准,如果这对它有任何影响,我也会使用 Visual Studio。
我认为错误不在于调用,因为传递的指针指向字符串数组地址。
//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|
【问题讨论】: