반응형
#if 1//poiniter를 활용한 대소문자 변경기능
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<ctype.h>
void string_check(char* input,int* total, int*upper, int*lower);
int main(void)
{
char input[100];
int total;
int upper;
int lower;
total=upper=lower=0;
while(1)
{
printf("임의의 문자열을 입력(종료: exit): ");
fgets(input,100,stdin);
printf("초기data: %s\n", input);
if(strncmp(input,"exit",4)==NULL)//input_buffer의 4글자가 exit일 경우 NULL값 부여 //4Byte 내용 비교하여 exit
{
break;
}
else
{
total=strlen(input)-1;
string_check(input, &total,&upper,&lower);
// 대문자-->소문자 소문자 --> 대문자
printf("변경data: %s\n", input);
printf("총 글자수: %d\n", total);
printf("대문자 수: %d\n", upper);
printf("문자 수: %d\n", lower);
}
}
return 0;
}
void string_check(char* input,int* total, int*upper, int*lower)
{
int i;
for(i=0;i<*total;i++)
{
if(isupper(*(input+i)))//대문자인 경우
{
*(input+i)+=0x20;//tolower(*(input+i))
*upper+=1;
}
else
{
*(input+i)-=0x20;//tolower(*(input+i))
*lower+=1;
}
}
}
#endif
string.h에서 제공하는 tolower(), toupper() 함수를 사용하는 방법과
ASCII 코드를 활용해서 A라는 문자의 아스키 16진수 값 0x41과 a의 아스키 16진수 값 0x61의 차이 만큼 빼주면
동작은 똑같이 된다.
반응형
'C Programming' 카테고리의 다른 글
[C]이차원 배열 별표 출력 프로그램 (0) | 2023.10.14 |
---|---|
[C_Debug]visual studio C4996 에러 해결하기 (1) | 2023.10.14 |
[C]함수 계산기 프로그램 (0) | 2023.10.14 |
[C]아스키 코드 표 출력 Print ASCII code (0) | 2023.10.14 |
1차원 배열을 활용한 버블 정렬[Bubble Sort] (0) | 2023.10.14 |