c语言从键盘输入十个字符串用二维字符数组在十个字符串中找出最大的字符串
时间: 2024-10-15 13:24:32 浏览: 37
在C语言中,你可以通过以下步骤来实现这个功能:
1. 定义一个二维字符数组来存储输入的字符串,因为每个字符串可以看作是一个单独的一维数组,所以我们需要一个二维结构来容纳它们。
```c
#include <stdio.h>
#include <string.h>
#define MAX_STRINGS 10
#define MAX_LENGTH 50
char** stringArray;
```
2. 创建一个函数来获取用户输入并动态分配内存给字符串。这里我们假设用户输入的字符串长度不会超过`MAX_LENGTH`。
```c
void getInput() {
int i;
for (i = 0; i < MAX_STRINGS; i++) {
char input[MAX_LENGTH];
fgets(input, MAX_LENGTH, stdin); // 获取一行输入,去掉换行符
input[strcspn(input, "\n")] = '\0'; // 移除换行符
stringArray[i] = malloc(sizeof(char*) * (MAX_LENGTH + 1)); // 动态分配空间
strcpy(stringArray[i], input); // 复制输入到动态分配的空间
}
}
```
3. 编写一个函数来找到最大字符串及其长度。遍历整个数组,并用`strlen()`函数比较每个字符串的长度。
```c
void findMaxString() {
char* maxString = stringArray[0];
int maxLength = strlen(maxString);
for (int i = 1; i < MAX_STRINGS; i++) {
if (strlen(stringArray[i]) > maxLength) {
maxLength = strlen(stringArray[i]);
maxString = stringArray[i];
}
}
printf("最长的字符串是:%s\n", maxString);
}
```
4. 主程序部分调用上述两个函数。
```c
int main() {
stringArray = (char**)malloc(MAX_STRINGS * sizeof(char*));
getInput();
findMaxString();
// 清理动态分配的内存
for (int i = 0; i < MAX_STRINGS; i++) {
free(stringArray[i]);
}
free(stringArray);
return 0;
}
```
在这个例子中,你需要确保有足够的内存来存储所有字符串,并记得在程序结束前释放动态分配的内存,以防止内存泄漏。
阅读全文