[英]Capitalizing specific letters in a character string in C
我一直在試圖弄清楚如何使數組中的某些字符串字母全部輸入為小寫字母,並在下划線(即“ first_last”)輸出時加上空格,並且每個開頭字母之間使用大寫字母(即“第一倒數”)。
任何有用的想法表示贊賞
這是我到目前為止的內容:
#include <stdio.h>
#define SIZE 30
int main()
{
char string1(SIZE); //reserve a name of up to 29 characters
//read characters from input into array string 1
printf("%s", "Enter a name:);
scanf("%29s", string1);
}
您可以按字符處理字符串並修改相關字符,例如:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
// Capitalise based on your specs.
static void cap(char *str) {
// No actions for empty string.
if (*str == '\0') return;
// Always upper first character.
str[0] = toupper(str[0]);
// Check all but last character (ignore trailing '_').
for (size_t i = 1, count = strlen(str) - 1; i < count; ++i) {
// If underscore, make space and upper next character.
if (str[i] == '_') {
str[i] = ' ';
str[i+1] = toupper(str[i+1]);
}
}
}
// Test driver to do all arguments.
int main(int argc, char *argv[]) {
for (int i = 1; i < argc; ++i) {
printf("'%s'", argv[i]);
cap(argv[i]);
printf("-> '%s'\n", argv[i]);
}
}
您可能想要處理極端情況,但由於您尚未為它們指定所需的行為,因此我將其留給讀者作為進一步的練習。 要考慮的事情是:
multiple____underscores
__下划線的字符串; _
; _
如果不跟小寫字母; 和 這是一個示例運行,因此您可以看到它的運行情況:
pax$ testprog first_second one one_two
'first_second'-> 'First Second'
'one'-> 'One'
'one_two'-> 'One Two'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.