C语言输入一段字符(由空格、字母和数字几种组成,保证开头不为空格),里面有若干个字符串,求这些字符串的长度和,并输出最长字符串内容,如果有多个输出最先出现的那个字符串。以stop作为最后输入的字符串
时间: 2023-11-20 22:30:08 浏览: 108
好的,我来解答这个问题。
首先,我们可以使用C语言中的字符串处理函数来实现对输入字符串的处理。具体来说,可以使用`fgets`函数读入一行字符串,然后使用`strtok`函数将该行字符串按照空格进行分割,得到每个子字符串。接下来,我们可以使用`strlen`函数计算每个子字符串的长度,并累加到总和中,同时记录最长的子字符串和其长度。如果遇到输入的字符串为"stop",则停止输入并输出结果。
下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char input[1000];
char* token;
int len_sum = 0, max_len = 0;
char* max_str = NULL;
printf("请输入一行字符串,以stop结束:\n");
while (fgets(input, sizeof(input), stdin)) {
if (strstr(input, "stop") != NULL) {
break;
}
token = strtok(input, " ");
while (token != NULL) {
int len = strlen(token);
len_sum += len;
if (len > max_len) {
max_len = len;
max_str = token;
}
token = strtok(NULL, " ");
}
}
printf("所有子字符串长度之和为:%d\n", len_sum);
printf("最长的子字符串为:%s\n", max_str);
return 0;
}
```
注意,上述代码中使用了`strstr`函数来判断输入的字符串是否为"stop"。`strstr`函数用于在一个字符串中查找给定的子字符串,并返回该子字符串在原字符串中首次出现的位置。如果没有找到该子字符串,则返回NULL。
阅读全文