C语言程序编译:写一个函数,输入一行字符,将此字符串中最长的单词输出。
时间: 2024-12-13 07:28:55 浏览: 18
在C语言中,编写一个函数来找出给定字符串中最长的单词需要以下几个步骤:
首先,创建一个名为`find_longest_word`的函数,它接受一个`const char*`类型的参数`input_string`作为输入,代表一行字符。
```c
#include <stdio.h>
#include <string.h> // 需要这个头文件来使用strlen函数
// 函数声明
char* find_longest_word(const char* input_string);
int main() {
const char* input = "Hello, this is a test string for the function.";
char* longest_word = find_longest_word(input);
printf("Longest word: %s\n", longest_word); // 输出结果
free(longest_word); // 释放内存
return 0;
}
// 实现函数
char* find_longest_word(const char* input_string) {
if (input_string == NULL) {
return NULL; // 如果输入为空,返回NULL
}
char* longest = malloc(sizeof(char)); // 初始化最长单词指针
*longest = '\0'; // 设置初始值为结束符
char* current_word_start = input_string;
while (*current_word_start != '\0') { // 遍历字符串直到遇到结束符
if (*current_word_start == ' ') { // 当前字符是空格,检查上一个单词是否更长
size_t word_length = current_word_start - input_string;
if (word_length > strlen(longest)) {
// 更新最长单词
char temp[strlen(input_string) + 1]; // 备份当前最长词到临时数组
strncpy(temp, longest, strlen(longest));
temp[word_length] = '\0';
free(longest); // 释放之前分配的最长词空间
longest = malloc(strlen(temp) + 1); // 分配新空间
strcpy(longest, temp);
}
}
current_word_start++; // 移动到下一个字符
}
return longest; // 返回找到的最长单词
}
```
阅读全文