输入一段字符(由空格、字母和数字几种组成,保证开头不为空格),里面有若干个字符串,求这些字符串的长度和,并输出最长字符串内容,如果有多个输出最先出现的那个字符串。以stop作为最后输入的字符串。
时间: 2024-12-17 21:49:45 浏览: 12
这个问题可以通过C语言的`strtok()`函数来解决,结合数组或动态内存分配来存储结果。下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void process_string(const char* input, char* delimiter) {
char* token = strtok(input, delimiter);
int sum_length = 0;
char longest[100];
size_t longest_len = 0;
while (token != NULL) {
int len = strlen(token);
// 更新总长度和最长字符串信息
sum_length += len;
if (len > longest_len) {
strcpy(longest, token);
longest_len = len;
}
token = strtok(NULL, delimiter);
}
printf("所有字符串的总长度: %d\n", sum_length);
printf("最长的字符串: '%s'\n", longest);
}
int main() {
char input[] = "hello world 123 this is a test string with stop";
const char delimiter[] = " ";
process_string(input, delimiter);
char stop_input[] = "stop";
process_string(stop_input, delimiter); // 这里停止输入并输出之前的结果
return 0;
}
```
在这个程序中,我们首先初始化`sum_length`和`longest`变量,然后使用`strtok()`遍历输入的字符串。每当找到一个非空的子串(即不是分隔符),我们就计算其长度,并更新`sum_length`和`longest`。当遇到`"stop"`时,我们会停止进一步处理,并输出之前的统计结果。
阅读全文