// 字符串处理.cpp : 定义控制台应用程序的入口点。
// 1. 把每个单词的首字母变为大写。
// 2. 把数字与字母之间用下划线字符(_)分开,使得更清晰
// 3. 把单词中间有多个空格的调整为1个空格。
// 例如:
// 用户输入:
// you and me what cpp2005program
// 则程序输出:
// You And Me What Cpp_2005_program
// 用户输入:
// this is a 99cat
// 则程序输出:
// This Is A 99_cat
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int _tmain(int argc, _TCHAR* argv[])
{
char str[200] = {0};
char str1[200] = {0};
char pre = 0; //str当前字符的上一个字符
int count = 0; //判断是否出入' '的标识
int index = 0; //str1的数组下标
gets_s(str,200);
int length = strlen(str);
//isalpha 检查ch是否是字母
//isdigit 检查ch是否是数字
//isupper 检查ch是否是大写字母
//isalnum 检查ch是否是字母或者数字
for (int i = 0; i < length; ++i) {
if (isalpha(str[i])) {
if (!isalnum(pre) && !isupper(str[i])) {
str1[index++] = str[i] - 32;
count = 0;
} else {
if (isdigit(pre)) {
str1[index++] = '_';
}
str1[index++] = str[i];
}
} else if (isdigit(pre) && isalpha(str[i])||isalpha(pre) && isdigit(str[i])) {
str1[index++] = '_';
str1[index++] = str[i];
count = 0;
} else if (str[i] == ' ') {
if (count == 0)
str1[index++] = ' ';
count++;
} else {
str1[index++] = str[i];
}
pre = str[i];
}
str1[index] = '\0';
puts(str1);
return 0;
}
// 1. 把每个单词的首字母变为大写。
// 2. 把数字与字母之间用下划线字符(_)分开,使得更清晰
// 3. 把单词中间有多个空格的调整为1个空格。
// 例如:
// 用户输入:
// you and me what cpp2005program
// 则程序输出:
// You And Me What Cpp_2005_program
// 用户输入:
// this is a 99cat
// 则程序输出:
// This Is A 99_cat
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int _tmain(int argc, _TCHAR* argv[])
{
char str[200] = {0};
char str1[200] = {0};
char pre = 0; //str当前字符的上一个字符
int count = 0; //判断是否出入' '的标识
int index = 0; //str1的数组下标
gets_s(str,200);
int length = strlen(str);
//isalpha 检查ch是否是字母
//isdigit 检查ch是否是数字
//isupper 检查ch是否是大写字母
//isalnum 检查ch是否是字母或者数字
for (int i = 0; i < length; ++i) {
if (isalpha(str[i])) {
if (!isalnum(pre) && !isupper(str[i])) {
str1[index++] = str[i] - 32;
count = 0;
} else {
if (isdigit(pre)) {
str1[index++] = '_';
}
str1[index++] = str[i];
}
} else if (isdigit(pre) && isalpha(str[i])||isalpha(pre) && isdigit(str[i])) {
str1[index++] = '_';
str1[index++] = str[i];
count = 0;
} else if (str[i] == ' ') {
if (count == 0)
str1[index++] = ' ';
count++;
} else {
str1[index++] = str[i];
}
pre = str[i];
}
str1[index] = '\0';
puts(str1);
return 0;
}