如何用C语言找出最长的字符串?编写程序,功能是将键盘输入的N个字符串中找出最长的那个字符串并输出。 输入: 第一行为一个整数N, 代表字符串个数 第二行开始输入N个字符串。 输出: 最长的字符言
时间: 2024-12-23 22:27:12 浏览: 10
C语言求两个字符串的最长公共子串
5星 · 资源好评率100%
在C语言中,你可以通过动态内存分配和逐个比较字符串长度的方式来找出最长的字符串。以下是一个简单的示例程序,它接收用户输入的字符串,并找到最长的一个:
```c
#include <stdio.h>
#include <string.h>
// 函数声明
char* findLongestString(int n, char** strings);
int main() {
int N;
printf("请输入字符串个数: ");
scanf("%d", &N);
// 动态分配存储字符串数组的空间
char** stringArray = (char**)malloc(N * sizeof(char*));
if (!stringArray) {
perror("Memory allocation failed");
return 1;
}
for (int i = 0; i < N; i++) {
char str[100];
printf("请输入第 %d 个字符串: ", i + 1);
fgets(str, sizeof(str), stdin); // 读取一行字符串
str[strcspn(str, "\n")] = '\0'; // 去除换行符
stringArray[i] = strdup(str); // 拷贝到动态数组
}
// 找出并打印最长的字符串
char* longestStr = findLongestString(N, stringArray);
if (longestStr != NULL) {
printf("最长的字符串是: %s\n", longestStr);
free(longestStr); // 释放内存
} else {
printf("找不到最长的字符串。\n");
}
// 释放所有字符串指针占用的内存
for (int i = 0; i < N; i++) {
free(stringArray[i]);
}
free(stringArray);
return 0;
}
// 查找最长字符串的函数
char* findLongestString(int n, char** strings) {
char* longest = strings[0]; // 假设第一个就是最长的
for (int i = 1; i < n; i++) {
if (strlen(strings[i]) > strlen(longest)) {
longest = strings[i];
}
}
return longest;
}
```
阅读全文