1.在主函数中输入num个字符串,写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址,在主函数中输出。(注意:用****作为结束输入的标志。)
时间: 2024-12-15 10:22:37 浏览: 13
在C语言中,你可以创建一个函数来实现这个功能。首先,我们需要定义一个辅助函数来比较两个字符串长度,然后在主函数中获取用户输入并调用这个辅助函数找到最长的字符串。下面是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 辅助函数,用于比较两个字符串的长度
int compareStrings(char* str1, char** max) {
if (strlen(str1) > strlen(*max)) {
*max = str1;
return 0; // 如果找到了更长的字符串,返回0表示更新了最大值
} else {
return 1; // 否则,如果str1较短,则保持原最大值不变,返回1
}
}
int main() {
int num;
char** strings;
// 输入字符串的数量
printf("请输入字符串的数量(以****结束): ");
fgets(input, sizeof(input), stdin); // 使用fgets防止换行符干扰
sscanf(input, "%d", &num);
// 判断是否达到结束输入标志
if (strcmp(input, "****") == 0) {
printf("输入结束。\n");
return 0;
}
// 动态分配内存存储字符串
strings = (char**)malloc(num * sizeof(char*));
for (int i = 0; i < num; ++i) {
char buffer[100];
scanf("%s", buffer); // 获取每个字符串,直到遇到换行或****
// 比较当前字符串长度并更新最长字符串
if (compareStrings(buffer, &strings[i])) {
// 如果输入****,不再继续读取
if (strcmp(buffer, "****") == 0) break;
}
}
// 输出最长字符串
printf("最长的字符串是: ");
for (int i = 0; i < num && strcmp(strings[i], "****"); ++i) {
printf("%s ", strings[i]);
}
printf("\n");
// 释放内存
free(strings);
return 0;
}
阅读全文