题目描述
编写程序,在一个字符串中查找最长的单词,假定字符串只含有字母与空格,且空格用于分隔不同的单词。 思考:你能输出字符串中最长的单词么?
案例代码
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
char longest_word[100];
int i, j;
int len, max_len = 0;
printf("Enter a string: ");
gets(str);
len = strlen(str);
for (i = 0; i < len; i++) {
// 查找单词的起始位置
if (str[i] != ' ') {
j = i;
while (str[j] != ' ' && j < len) {
j++;
}
// 比较当前单词长度和之前的最大长度
if (j - i > max_len) {
max_len = j - i;
strncpy(longest_word, &str[i], max_len);
longest_word[max_len] = '\0';
}
i = j;
}
}
printf("Longest word: %s\n", longest_word);
printf("Length: %d\n", max_len);
return 0;
}
这个程序首先提示用户输入一个字符串,并使用 gets() 函数读取输入的字符串。接着,程序遍历整个字符串,逐个查找单词的起始位置和结束位置,计算每个单词的长度,并比较长度大小,最终找到最长的单词并输出。需要注意的是,在 C 语言中字符串是以 null 字符(’\0’)结尾的字符数组,因此我们在复制最长单词的时候需要手动添加 null 字符以结束字符串。
需要注意的是,因为使用 gets() 函数可能会导致缓冲区溢出的安全问题,因此在实际的程序中,建议使用 fgets() 函数来读取输入的字符串,并指定最大读取长度。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END