在C语言中,可以通过以下步骤来绘制表格:
获取用户输入
用户首先输入一个整数,表示接下来有多少行信息。
每行由若干单元组成,单元间用逗号分开。
处理输入数据
读取用户输入的每一行,并存储在字符数组中。
计算每列的最大宽度,以便确定表格的列宽。
输出表格
使用嵌套循环来遍历每一行和每一列。
在每一行中,使用竖线 `|` 分隔单元格,并使用连字符 `-` 填充单元格以使其对齐。
```c
include include define MAX_ROWS 30 define MAX_COLS 40 define MAX_CELL_LEN 100 void chart(int n, char s[][MAX_CELL_LEN], int max_col[], int col_width); int main() { int n; printf("Enter the number of rows: "); scanf("%d", &n); getchar(); // To consume the newline character char input[MAX_ROWS][MAX_CELL_LEN]; for (int i = 0; i < n; i++) { printf("Enter row %d: ", i + 1); fgets(input[i], MAX_CELL_LEN, stdin); input[i][strcspn(input[i], "\n")] = 0; // Remove newline character } int max_col[MAX_COLS] = {0}; chart(n, input, max_col, 0); return 0; } void chart(int n, char s[][MAX_CELL_LEN], int max_col[], int col_width) { int i, j, k, max; for (i = 0; i < n; i++) { for (j = 0; j < strlen(s[i]); j++) { if (s[i][j] == ',' || j == strlen(s[i]) - 1) { max_col[j] = j == strlen(s[i]) - 1 ? j : max_col[j]; printf("|"); } else { printf("%-*s", max_col[j] + 1, s[i] + j); } } printf("|\n"); } } ``` 代码解释: 用户输入行数 `n`。 使用 `fgets` 读取每一行,并去除末尾的换行符。 `max_col` 数组用于存储每列的最大宽度。 `chart` 函数遍历每一行,计算每列的最大宽度。 使用嵌套循环遍历每一行和每一列。 使用 `printf` 输出表格,使用 `|` 分隔单元格,并使用 `%-*s` 格式化输出以使内容左对齐。 示例输出: ``` Enter the number of rows: 3 Enter row 1: cat,dog,good-luck Enter row 2: 1,2,5 Enter row 3: do not use,,that |cat |dog|good-luck| |1 |2 |5 | |do |not|use | |use |,,that | ``` 通过这种方式,你可以在C语言中实现一个简单的表格绘制程序。根据具体需求,你可以进一步扩展和优化代码,例如添加更多的功能或改进用户界面。输入部分
处理输入数据
输出表格