Я написал программу на C, которая получает строку от пользователя (50 символов — это предел) и присваивает символы верхнего регистра строке с именем upper
, а символы нижнего регистра — lower
, в конце концов она должна печатать эти строки (сначала upper
). Моя проблема в том, что когда я ввожу строку, она печатает только одну строку (т.е. если строка начинается с верхнего символа, то будет напечатано upper
) вместо двух из них.
Вот мой код:
#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;
}
> 'A'
--›>= 'A'
- person BLUEPIXY   schedule 10.03.2017str[strcspn(str, "\n")] = 0;
, потому чтоfgets()
вставит NULL, а ваше объявлениеstr[]
полностью заполнит его NULL. - person Chimera   schedule 10.03.2017printf("\nUPPER:[%s] LOWER[%s]\n", upper,lower);
- person Chimera   schedule 10.03.2017