Cで文字列を取得するプログラムを作成しました(50文字が上限です)大文字の文字をupper
という文字列に、小文字をlower
に、最後にそれらの文字列(upper
を最初に)を出力することになっています。私の問題は、文字列を入力するときに文字列が1つだけ(つまり、文字列が上の文字で始まり、upper
が印刷される場合)2つではなく、1つの文字列が印刷されることです。あなたの配列の両方のためのイテレータとしてJを使用しているCで文字列の文字を数えて別のグループに割り当てる方法(小文字と大文字)
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <math.h>
#define MAX_LEN 50
int main()
{
char str[MAX_LEN] = { 0 };
char upper[MAX_LEN] = { 0 };
char lower[MAX_LEN] = { 0 };
int i = 0;
int j = 0;
printf("Enter a string: ");
fgets(str, MAX_LEN, stdin);
str[strcspn(str, "\n")] = 0;
for (i = 0; i < strlen(str); i++)
{
if (str[i] > 'A' && str[i] < 'Z')
{
upper[j] = str[i];
}
else if (str[i] > 'a' && str[i] < 'z')
{
lower[j] = str[i];
}
j++;
}
printf("%s", upper);
printf("%s", lower);
getch();
return 0;
}
lowerおよびupper変数に同じインデックス変数jを使用しています。両方に異なる変数を使用します。 – Ayush
また、 '> 'A'' - >'> =' A'' – BLUEPIXY
[ctype.hはisupperとislowerを提供します](https://en.wikipedia.org/wiki/C_character_classification#Overview_of_functions)現在のロケール。 – Schwern