要实现输入英文单词并输出每个单词首字母大写的功能,可以按照以下步骤进行:
输入处理 :使用 `fgets` 函数读取整行输入,避免使用已弃用的 `gets` 函数。首字母大写:
遍历字符串,找到每个单词的首字母并将其转换为大写。
输出结果:
输出处理后的字符串。
```c
include include include define MAX_WORD_LENGTH 100 define MAX_WORDS 100 void capitalizeFirstLetter(char *str) { if (str >= 'a' && str <= 'z') { str -= 32; // Convert to uppercase } } int main() { char words[MAX_WORDS][MAX_WORD_LENGTH]; char buffer; int wordCount = 0; printf("请输入英文单词(输入空格分隔,结束输入空行):\n"); while (1) { if (fgets(buffer, sizeof(buffer), stdin) == NULL) { break; // 输入结束 } // Remove newline character if present size_t len = strlen(buffer); if (len > 0 && buffer[len - 1] == '\n') { buffer[len - 1] = '\0'; } // Split the line into words char *token = strtok(buffer, " "); while (token != NULL) { if (strlen(token) > 0) { capitalizeFirstLetter(token); printf("%s ", token); } token = strtok(NULL, " "); } printf("\n"); } return 0; } ``` 代码说明: 函数 `capitalizeFirstLetter` 检查字符是否为小写字母('a' 到 'z')。 如果是,则通过 `str -= 32` 将其转换为对应的大写字母。 定义两个数组:`words` 用于存储输入的单词,`buffer` 用于临时存储输入行。 使用 `fgets` 读取输入行,并去除末尾的换行符。 使用 `strtok` 函数按空格分割输入行,得到每个单词。 对每个单词调用 `capitalizeFirstLetter` 函数,并输出处理后的单词。 注意事项: `fgets` 函数会读取整行输入,包括空格,因此可以处理包含多个单词的句子。 `strtok` 函数会修改原字符串,如果需要保留原输入,建议先复制一份。 该程序假设输入的单词长度不超过 `MAX_WORD_LENGTH`,且单词之间由空格分隔。 通过这种方式,可以灵活地处理包含任意数量单词的输入,并将每个单词的首字母转换为大写输出。主函数 `main`