01.
더보기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
char ch;
printf("문자를 하나 입력하세요 >> ");
scanf("%c", &ch);
// ch = getchar();
printf("\n%c의 아스키 코드값은 십진수로 %d 입니다.", ch, ch);
return 0;
}
02.
더보기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main(void)
{
char ch[30];
printf("한 단어를 입력하세요 >> ");
scanf("%s", ch);
for (int i = 0, j = (int)strlen(ch) - 1; i < j; i++, j--) {
// XOR swap
ch[i] ^= ch[j];
ch[j] ^= ch[i];
ch[i] ^= ch[j];
}
printf("%s\n", ch);
return 0;
}
03.
더보기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[100];
printf("한 줄의 문장을 입력하세요 >> \n");
gets(str);
printf("입력한 각각의 단어를 반대로 출력합니다 >> \n");
char* ptoken = strtok(str, " ");
while (ptoken)
{
for (int i = 0, j = (int)strlen(ptoken) - 1; i < j; i++, j--) {
// XOR swap
ptoken[i] ^= ptoken[j];
ptoken[j] ^= ptoken[i];
ptoken[i] ^= ptoken[j];
}
printf("%s ", ptoken);
ptoken = strtok(NULL, " ");
}
printf("\n");
// puts(str); //strtok함수를 구분자를 찾아 그 부분에 \0을 넣기 때문에 한행 출력이 안됨
}
04.
더보기
#include <stdio.h>
int lenofstr(char*); //char []
char* concatenate(char*,const char*);
int main(void)
{
char s1[100] = "C언어 ", s2[] = "사랑합니다!";
printf("%s\n", concatenate(s1, s2));
return 0;
}
char* concatenate(char* str1, const char* str2)
{
char *add = str1 + lenofstr(str1);
//*add = str2; //이런 식으로 하면 str1의 마지막 주소에 str2의 주소를 넣는 거니까 걍 말이 안 됨
while (*str2 != '\0') //str[n]의 값이 null이 아니면
*add++ = *str2++;
*add = '\0';
return str1;
}
int lenofstr(char* str) //char str[]
{
int len = 0;
for (int i = 0; *(str + i) != '\0'; i++)
{
len++;
}
return len;
}
05.
더보기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
char* itoh(int, char*);
int main(void)
{
int input;
char str[20];
printf("10000보다 작은 정수 하나를 입력하세요 >> ");
scanf("%d", &input);
while (input>=10000 || input<=0)
{
printf("잘못 입력하셨습니다. 10000보다 작은 정수 하나를 입력하세요 >> ");
scanf("%d", &input);
}
itoh(input, str);
printf("입력한 정수는 [%s]입니다.\n", str);
return 0;
}
char* itoh(int num, char* str)
{
char *digits[] = { "","일","이","삼","사","오","육","칠","팔","구"};
char *units[] = { "","십","백","천","만" };
char buffer[20] = { 0 };
int i = 0;
int j = 1;
while (num > 0)
{
int rem = num % 10;
if (rem > 0)
{
strcpy(buffer + i, digits[rem]);
i += strlen(digits[rem]);
}
if ((num/10)%10 != 0)
{
strcpy(buffer + i, units[j]);
i += strlen(units[j]);
j++;
}
else {
j++;
}
num /= 10;
}
buffer[i] = '\0';
// printf("%c%c", buffer[0],buffer[1]); //한글이라 2바이트씩 잡아먹음 메모리를
// swap도 2바이트씩 해줘야 함
int len = i;
for (int k = 0; k < len/2; k += 2) {
char temp = buffer[k];
buffer[k] = buffer[len - k - 2];
buffer[len - k - 2] = temp;
temp = buffer[k + 1];
buffer[k + 1] = buffer[len - k - 1];
buffer[len - k - 1] = temp;
}
printf("%s", buffer);
i = 0;
while (*(buffer + i) != '\0') //str[n]의 값이 null이 아니면
{
str[i] = buffer[i]; //*(str+i) = *(buffer+i);
i++;
}
str[i] = '\0';
return str;
}
06.
더보기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
char* lwrupr(char*);
int tolower(int);
int toupper(int);
int main(void)
{
char str[100];
printf("영어 문장을 입력하세요 >>\n");
gets(str);
lwrupr(str);
printf("\n입력한 문자열에서 대문자와 소문자를 반대로 변환하면 >>\n");
printf("%s\n", str);
return 0;
}
//ASCII 'A' = 65, 'a' = 97
int tolower(int ch)
{
ch += 32;
return ch;
}
int toupper(int ch)
{
ch -= 32;
return ch;
}
char* lwrupr(char* str)
{
char* ptr = str;
while (*ptr != '\0')
{
if (*ptr >= 'A' && *ptr <= 'Z') *ptr = tolower(*ptr);
else if (*ptr >= 'a' && *ptr <= 'z') *ptr = toupper(*ptr);
ptr++;
}
return str;
}
07.
더보기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int toint(const char* str);
int main(void)
{
char str[100];
printf("정수를 하나 입력하세요 >> ");
scanf("%s", str);
printf("%s", str);
printf("\n먼저 함수 atoi()를 이용한 정수 >> %d\n", atoi(str));
printf("직접 구현한 함수를 이용한 정수 >> %d\n", toint(str));
return 0;
}
int toint(const char* str)
{
int sum = 0;
int i = 0;
while (str[i])
sum = sum * 10 + str[i++] - '0';
return sum;
}
08.
더보기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int toint(const char* str);
int main(int argc, char* argv[])
{
char str[100];
printf("\n입력한 두 수를 더한 결과 >> %d + %d = %d\n", toint(argv[1]), toint(argv[2]), toint(argv[1]) + toint(argv[2]));
return 0;
}
int toint(const char* str)
{
int sum = 0;
int i = 0;
while (str[i])
sum = sum * 10 + str[i++] - '0';
return sum;
}