// [ 문제21 - 1 : getchar 함수와 putchar함수의 활용 ]
#include <stdio.h>
#include <string.h>
int convCase(char ch, char* ptr);
int main(void)
{
char ch;
int i;
char str[20];
fputs("하나의 문자를 입력하시오 :",stdout);
ch = getchar();
i = convCase(ch, str);
if (i == -1)
{
printf("범위를 벗어난 입력입니다.\n");
return -1;
}
else
printf("입력문자 \'%c\'의 %s는 \'%c\'입니다.", ch,str, (char)i);
return 0;
}
int convCase(char c, char* ptr)
{
int diff = 'a' - 'A';
if (c >= 'A' && c <= 'Z')
{
strcpy_s(ptr,20,"소문자");
return c + diff;
}
else if (c >= 'a' && c < 'z')
{
strcpy_s(ptr, 20, "대문자");
return c - diff;
}
else
return -1;
}
// [ 문제21 - 2 : 문자열 처리 ]
// 문제1 : 문자열내 숫자들의 합을 반환
#include <stdio.h>
#include <string.h>
void convToInt(char c, int* sum);
int main(void)
{
int sum = 0;
char str[100];
size_t len;
printf("숫자가 포함된 문자열 입력 :");
scanf_s("%s", str,100);
len = strlen(str);
for (int i = 0; i < len; i++)
{
convToInt(str[i], &sum);
}
printf("result : %d", sum);
}
void convToInt(char c, int* sum)
{
if (c >= '0' && c <= '9')
*sum += (int)(c - '0');
}
// [ 문제21 - 2 : 문자열 처리 ]
// 문제2 :
//str[1] -> str[3] 복사
// str[2] -> str[3] 붙이기
#include <stdio.h>
#include <string.h>
void RemoveBSN(char* str);
int main(void)
{
char str[3][20];
for (int i = 0; i < 2; i++)
{
printf("문자열 입력 [%d]:", i + 1);
fgets(str[i], 20, stdin);
RemoveBSN(str[i]);
}
strcpy_s(str[2], 20, str[0]);
strcat_s(str[2], 20, str[1]);
printf("result : %s", str[2]);
}
void RemoveBSN(char* str)
{
size_t len = strlen(str);
if (str[len - 1] == '\n')
{
str[len - 1] = '\0';
}
}
// [ 문제21 - 2 : 문자열 처리 ]
// 문제3 :
// 이름 나이를 하나의 문자열로 인식
// 두사람의 정보를 입력 받아, 이름과 나이가 같은지 판단
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void inputData(char arr[][15], int len);
int getSpaceIndex(char* str);
int compName(char str1[], char str2[]);
int compAge(char str1[], char str2[]);
int main(void)
{
char str[2][15];
inputData(str, 2);
if (!compName(str[0], str[1]))
printf("이름이 동일합니다.\n");
else
printf("이름이 다릅니다.\n");
if (!compAge(str[0], str[1]))
printf("나이가 동일합니다.\n");
else
printf("나이가 다릅니다.\n");
}
void inputData(char arr[][15],int len)
{
for (int i = 0; i < len; i++)
{
printf("데이터 입력[이름 나이] :");
gets_s(arr[i],sizeof(arr[0]));
}
}
// 반환값 : 공백존재: 해당 인덱스, 미존재: -1
int getSpaceIndex(char* str)
{
size_t len= strlen(str);
for (int i = 0; i < len; i++)
{
if (str[i] == ' ')
return i;
}
return -1;
}
// 반환값 - 일치: 0, 불일치: 1
int compName(char str1[], char str2[])
{
int spaceIndex1 = getSpaceIndex(str1);
int spaceIndex2 = getSpaceIndex(str2);
int result=0;
if (spaceIndex1 != spaceIndex2)
{
result = 1;
}
else if (strncmp(str1, str2,spaceIndex1 ) != 0)
result = 1;
return result;
}
// 반환값 - 일치: 0, 불일치: 1
int compAge(char str1[], char str2[])
{
int spaceIndex1 = getSpaceIndex(str1);
int spaceIndex2 = getSpaceIndex(str2);
int age1, age2;
int result=0;
age1 = atoi(&str1[spaceIndex1 + 1]);
age2 = atoi(&str2[spaceIndex2 + 1]);
if (age1 != age2)
return 1;
else
return 0;
}