C语言解决用子函数的形式将用户输入的字符串转为二维数组的完整代码及详细注释的问题
时间: 2024-02-09 14:10:17 浏览: 81
二维数组与指针数组的对比-C语言学习资料
以下是一个将用户输入的字符串转换成二维数组的C语言代码,使用了子函数的形式实现。代码中包含了详细的注释,以帮助理解代码实现过程。
```c
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 100
// 函数声明
void stringTo2DArray(char *input, char array[][MAX_SIZE], int *rows);
int main() {
char input[MAX_SIZE];
char array[MAX_SIZE][MAX_SIZE];
int rows = 0;
printf("Enter a string: ");
gets(input); // 获取用户输入的字符串
stringTo2DArray(input, array, &rows); // 调用子函数将字符串转为二维数组
// 打印二维数组
for(int i = 0; i < rows; i++) {
printf("%s\n", array[i]);
}
return 0;
}
// 将输入的字符串转为二维数组的子函数
void stringTo2DArray(char *input, char array[][MAX_SIZE], int *rows) {
char *token;
token = strtok(input, " "); // 将字符串按照空格分割成单独的字符
while(token != NULL) {
strcpy(array[*rows], token); // 将分割后的字符存储到二维数组中
(*rows)++; // 行数加1
token = strtok(NULL, " "); // 继续分割下一个字符
}
}
```
在主函数中,我们首先声明了一个字符数组`input`、一个二维字符数组`array`和一个整型变量`rows`,分别用于存储用户输入的字符串、存储二维数组的各个元素和记录二维数组的行数。
接着,我们使用`gets()`函数获取用户输入的字符串,并将其作为参数传递给`stringTo2DArray()`函数,该函数用于将输入的字符串转换成二维数组。
在`stringTo2DArray()`函数中,我们首先定义了一个指针变量`token`,用于存储按照空格分割后的单独字符。
然后,我们使用`strtok()`函数将输入的字符串按照空格分割成单独的字符,并将分割后的字符存储到二维数组中。每次存储完一个字符后,将行数`rows`加1,继续分割下一个字符,直到字符串中的所有字符都分割完毕。
最后,在主函数中,我们通过一个循环遍历二维数组中的各个元素,并使用`printf()`函数按照指定格式打印出来。
阅读全文