写一个函数,输入一行字符,将此字符串中最长的单词输出用c语言写
时间: 2024-10-13 11:12:53 浏览: 44
在C语言中,你可以编写一个函数来找出字符串中最长的单词。首先,你需要遍历整个字符串,分隔单词,然后比较每个单词的长度找到最长的那个。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 函数声明
char* find_longest_word(char str[], int len);
int main() {
char input[] = "This is a sample string to find the longest word.";
char* longest = find_longest_word(input, strlen(input));
if (longest) {
printf("The longest word is: %s\n", longest);
free(longest); // 一定要记得释放内存
} else {
printf("No words found in the string.\n");
}
return 0;
}
// 分割字符串并返回最长单词
char* find_longest_word(char str[], int len) {
char* words[len]; // 存储分割后的单词
int i, max_len = 0, current_len = 0;
bool in_word = false;
for (i = 0; i < len; ++i) {
if (!in_word && str[i] == ' ') continue; // 如果当前不是单词,遇到空格跳过
in_word = true;
current_len++;
// 遇到非字母字符结束当前单词
if (!isalpha(str[i])) {
words[current_len - 1] = '\0'; // 将单词添加到数组中,并设置结束标志
if (current_len > max_len) {
max_len = current_len;
longest = (char*)malloc((max_len + 1) * sizeof(char)); // 新建一个足够大的空间存储最长单词
strncpy(longest, words, max_len); // 复制最长单词
longest[max_len] = '\0'; // 添加结束符
}
current_len = 0; // 重置当前单词长度
in_word = false;
}
}
// 检查最后一个单词是否是最长的
if (current_len && current_len > max_len) {
longest = (char*)malloc((current_len + 1) * sizeof(char));
strncpy(longest, words, current_len);
longest[current_len] = '\0';
}
return longest;
}
```
注意这个程序假设输入字符串中的单词由空格分隔,且不包含标点符号。如果有特殊需求(如考虑标点或连字符连接的单词),则需要对代码进行相应的修改。
阅读全文