输入一段字符(由空格、字母和数字几种组成,保证开头不为空格),里面有若干个字符串,求这些字符串的长度和,并输出最长字符串内容,如果有多个输出最先出现的那个字符串。以stop作为最后输入的字符串。使用gets()函数
时间: 2023-11-20 15:20:28 浏览: 30
好的,我可以为您提供一个示例程序,实现您所描述的功能。请注意,由于使用了gets()函数,可能存在安全隐患,请谨慎使用。示例程序如下:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
int main() {
char input[MAX_LEN];
int total_length = 0, max_length = 0, max_index = -1;
char max_string[MAX_LEN];
while (1) {
gets(input);
if (strcmp(input, "stop") == 0) {
break;
}
int length = strlen(input);
total_length += length;
if (length > max_length) {
max_length = length;
max_index = total_length - length;
strcpy(max_string, input);
}
}
printf("Total length: %d\n", total_length);
printf("Max string: %s\n", max_string);
return 0;
}
```
程序的思路是:每次读取一行输入,如果输入为"stop",则结束循环;否则,计算该行字符串长度,并将长度加入总长度中。如果该行字符串长度大于当前最大长度,则更新最大长度、最大字符串以及最大字符串的起始位置。最后输出总长度和最大字符串。
需要注意的是,由于使用了gets()函数,程序可能存在缓冲区溢出等安全问题。推荐使用更为安全的fgets()函数来代替gets()函数。