0

単語で行を挿入できるプログラムを作成する必要があり、プログラムはすべての単語を最初の単語(大文字と小文字)のようにします。

例:
行を挿入 - AbbA ホールの有名なクラス

プログラムの出力は次のようになります。 - AbbA Hall FamEee ClaSs

単語全体を確認し、そこにあるシンボル (上または下) を取得するにはどうすればよいですか? そして、同じスキームですべての単語を作成します。

4

2 に答える 2

3

[コメント] ブール配列を作成し、最初の単語の各文字の大文字/小文字情報を取得します。同じブール配列を使用して、残りの単語をフォーマットします。今のところ私があなたを助けることができるのはこれだけです。プログラムを書いてみて、フォーラムに戻って、より多くの反応を得ることができます。コメントを投稿する権限がないため、回答セクションにコメントを追加しています

【回答】 どうぞ…

#include <stdio.h>
#include <string.h>

int main() {

    char inputStr[] = "AbbA hall fameee class";
    char bool_arr[50];
    char *ptr;
    int len = 0;
    int loopcnt = 0;
    int i = 0;

    printf("Input Str: %s\n", inputStr);    

    ptr = strtok(inputStr, " ");
    len = strlen(ptr);

    for(i = 0; i < len; i++) {
        if(toupper(ptr[i]) != ptr[i]) {
            bool_arr[i] = 0;    //Lower case
        }
        else {
            bool_arr[i] = 1;    //Upper case
        }
    }

    while(ptr != NULL) {
        if(strlen(ptr) < len) {
            loopcnt = strlen(ptr);
        }
        else {
            loopcnt = len;
        }

        for(i = 0; i < loopcnt; i++) {
            if(bool_arr[i] == 0 && 
                (tolower(ptr[i]) != ptr[i])) {
                ptr[i] = tolower(ptr[i]);
            }

            if(bool_arr[i] == 1 && 
                (toupper(ptr[i]) != ptr[i])) {
                ptr[i] = toupper(ptr[i]);
            }
        }

        printf("%s ", ptr);     

        ptr = strtok(NULL, " ");    
    }
}
于 2013-10-16T12:58:41.297 に答える
0
char str[]=" AbbA hall fameee class";
int flag=0;
int i;

for(i=0;i<len(str);i++)
{
    if(flag==0 && str[i]==' ')
    {
        str[i+1]+=32;
        flag=1;
    }
    else
    {
        flag=0;
    }

}
于 2013-10-16T13:01:45.413 に答える