C语言:输入一段字符(由空格、字母和数字几种组成,保证开头不为空格),里面有若干个字符串,求这些字符串的长度和,并输出最长字符串内容,如果有多个输出最先出现的那个字符串。以stop作为最后输入的字符串。帮我写一段代码解决这个问题
时间: 2024-10-03 07:03:33 浏览: 63
C语言统计字符串中字母、数字、空格和其他字符的个数
当然可以。在C语言中,你可以通过以下步骤来实现这个功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STR_LENGTH 100
int main() {
char input[MAX_STR_LENGTH];
fgets(input, sizeof(input), stdin); // 输入直到遇到换行符
input[strcspn(input, "\n")] = '\0'; // 移除fgets带来的换行符
char* token = strtok(input, " "); // 分割字符串
int total_length = 0;
char longest_str[MAX_STR_LENGTH] = "";
while (token != NULL) {
if (strcmp(token, "stop") == 0) { // 如果遇到"stop"
break;
}
int length = strlen(token);
total_length += length;
if (strlen(longest_str) < length) { // 检查是否是最长的
strcpy(longest_str, token);
}
token = strtok(NULL, " "); // 获取下一个token
}
printf("Total length of all strings: %d\n", total_length);
printf("Longest string content: %s\n", longest_str);
return 0;
}
```
这段代码首先读取用户输入的一段包含多个字符串的文本,然后分割字符串并计算它们的总长度。同时,它会维护一个最长字符串变量。当遇到"stop"时,停止处理并输出结果。
注意:`strtok`函数会在原字符串上做修改,如果需要保留原始输入,可以在每次循环后复制当前处理的字符串到新的变量中。此外,此程序假设所有字符串都不会超过`MAX_STR_LENGTH`大小。在实际应用中,你可能需要根据实际情况调整最大长度。
阅读全文