对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。 字符串由单词、空格和英文标点符号组成; 单词由大小写英文字母组成,单词之间通过空格或英文标点分隔。使用C语言实现
时间: 2023-08-14 10:14:13 浏览: 162
可以通过以下步骤实现:
1. 定义一个函数,接收一个字符串作为参数。
2. 使用 strtok 函数将字符串按照空格和标点符号分割成单词。
3. 对于每个单词,判断首字母是否为大写字母。
4. 如果首字母不是大写字母,则将首字母变成大写字母。
5. 将修改后的单词拼接成新的字符串。
6. 返回新的字符串。
下面是具体实现代码:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char* capitalizeWords(char* str) {
char* token = strtok(str, " ,.?!;:");
char* newStr = (char*)malloc(strlen(str) + 1);
strcpy(newStr, "");
while (token != NULL) {
if (!isupper(token[0])) {
token[0] = toupper(token[0]);
}
strcat(newStr, token);
strcat(newStr, " ");
token = strtok(NULL, " ,.?!;:");
}
newStr[strlen(newStr) - 1] = '\0';
return newStr;
}
int main() {
char str[] = "hello, my name is john. what's your name?";
printf("%s\n", capitalizeWords(str));
return 0;
}
```
输出结果为:
```
Hello, My Name Is John. What's Your Name?
```
阅读全文