编写一个C语言程序,使用指针数组存储多个字符串,并输出这些字 符串中长度最长的字符串
时间: 2024-11-09 21:17:48 浏览: 39
在C语言中,可以创建一个动态分配内存的指针数组来存储多个字符串。下面的程序会找出长度最长的字符串:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STRINGS 5 // 定义最多存储的字符串数量
// 函数声明用于查找最长字符串
char* find_longest_string(char** strings, int count);
int main() {
char** string_array; // 指针数组
int i, max_len = 0;
char longest[50] = ""; // 初始化最长字符串
// 分配内存给字符串数组
string_array = (char**)malloc(MAX_STRINGS * sizeof(char*));
printf("请输入 %d 个字符串:\n", MAX_STRINGS);
for (i = 0; i < MAX_STRINGS; ++i) {
printf("字符串%d: ", i+1);
char input[50];
fgets(input, sizeof(input), stdin);
input[strcspn(input, "\n")] = '\0';
string_array[i] = (char*)malloc(strlen(input) + 1); // 动态分配内存
strcpy(string_array[i], input); // 复制字符串
if (strlen(input) > max_len) { // 更新最长字符串长度
max_len = strlen(input);
strcpy(longest, input);
}
}
// 输出最长的字符串
printf("最长的字符串是: %s\n", longest);
// 清理内存
for (i = 0; i < MAX_STRINGS; ++i) {
free(string_array[i]);
}
free(string_array);
return 0;
}
// 查找最长字符串的辅助函数
char* find_longest_string(char** strings, int count) {
char* longest_str = strings[0];
for (int i = 1; i < count; i++) {
if (strlen(strings[i]) > strlen(longest_str)) {
longest_str = strings[i];
}
}
return longest_str;
}
阅读全文