C++实现首字母大写、过滤多余空格后输出
时间: 2024-01-27 10:03:53 浏览: 70
以下是C语言实现首字母大写、过滤多余空格后输出的代码:
```c
#include <stdio.h>
#include <ctype.h>
void capitalize(char *str) {
int i = 0;
while (str[i] != '\0') {
if (i == 0 || str[i-1] == ' ') {
str[i] = toupper(str[i]);
} else {
str[i] = tolower(str[i]);
}
i++;
}
}
void remove_extra_spaces(char *str) {
int i, j;
for (i = j = 0; str[i]; i++) {
if (!isspace(str[i]) || (i > 0 && !isspace(str[i-1]))) {
str[j++] = str[i];
}
}
if (j > 0 && isspace(str[j-1])) {
j--;
}
str[j] = '\0';
}
int main() {
char str[1000];
printf("Enter a string: ");
fgets(str, 1000, stdin);
capitalize(str);
remove_extra_spaces(str);
printf("Output: %s\n", str);
return 0;
}
```
这个程序要求用户输入一个字符串,然后对其进行首字母大写和过滤多余空格的处理,最后输出处理后的字符串。
首先,我们定义了两个函数:`capitalize()`和`remove_extra_spaces()`。
`capitalize()`函数用于将字符串的每个单词的首字母大写,其实现方式是遍历字符串中的每个字符,如果当前字符是单词的第一个字符或者前一个字符是空格,则将该字符转换为大写,否则转换为小写。
`remove_extra_spaces()`函数用于删除字符串中多余的空格,其实现方式是遍历字符串中的每个字符,如果当前字符不是空格或者前一个字符也不是空格,则将该字符保留,否则忽略该字符。最后,如果字符串末尾有多余的空格,则删除它们。
在`main()`函数中,我们首先使用`fgets()`函数从标准输入中读取一行字符串,接着调用`capitalize()`和`remove_extra_spaces()`函数对该字符串进行处理,最后输出处理后的字符串。
注意,在使用`fgets()`函数读取字符串时,我们限定了字符串的长度不能超过1000个字符。如果用户输入的字符串超过了这个长度,可能会导致程序出现错误。如果需要处理更长的字符串,可以根据实际情况自行调整数组大小。
阅读全文