用C语言编写一个函数,将一行字符串中最长的单词输出。此行字符串由主函数以参数形式传递 给该函数,要求用指针来实现。
时间: 2024-12-13 13:16:42 浏览: 13
在C语言中,你可以通过遍历输入字符串并逐个检查单词长度来实现这个功能。这里是一个简单的示例函数,它接受一个指向字符串的指针,并返回最长的单词:
```c
#include <stdio.h>
#include <string.h>
// 定义一个辅助函数用于判断是否为空格
int is_space(char c) {
return c == ' ' || c == '\t' || c == '\n';
}
// 函数来找出最长的单词
char* find_longest_word(const char* str) {
const char* word_start = str;
int max_len = 0;
char* longest_word = NULL;
// 遍历字符串,直到遇到空字符
while (*str != '\0') {
if (is_space(*str)) { // 如果当前字符是空格,则开始新词
int len = str - word_start - 1; // 计算上一个单词的长度
if (len > max_len) { // 更新最长单词
max_len = len;
longest_word = (char*) malloc(max_len + 1); // 分配内存
strncpy(longest_word, word_start, max_len);
longest_word[max_len] = '\0'; // 添加结束符
}
word_start = str + 1; // 移动到下一个非空字符
} else {
str++; // 如果不是空格,继续检查下一个字符
}
}
// 检查最后一个单词是否是最长的
int last_len = str - word_start - 1;
if (last_len > max_len) {
free(longest_word); // 如果有更长的单词,释放之前的内存
longest_word = (char*) malloc(last_len + 1);
strncpy(longest_word, word_start, last_len);
longest_word[last_len] = '\0';
}
return longest_word;
}
int main() {
char input[] = "Hello, this is a test string to demonstrate the function.";
char* longest = find_longest_word(input);
if (longest) {
printf("The longest word is: %s\n", longest);
free(longest); // 别忘了释放内存
} else {
printf("No words found.\n");
}
return 0;
}
```
阅读全文