2022.02.16 문자열과 배열 (array05, array06)

2022. 2. 16. 16:30과제 업로드

#include <stdio.h>
#include <string.h>

void main()
{
//입력된 문자열을 반대로 출력

char ss[20];
char ww[20] = {NULL};
int len1;
printf("문자열을 입력하시오 =>");

gets(ss);
len1 = strlen(ss);

for (int i = 0; i < len1; i++)
{
ww[i] = ss[len1 - i-1];
}
printf("내용을 거꾸로 출력 => %s", ww);
}

 

#include <stdio.h>
#include <string.h>
#include<malloc.h>
#define MAX_INPUT 100

void main()
{
char input_string[MAX_INPUT]; //사용자로부터 입력받는 문자열을 저장하는 배열
char* output; //대문자 소문자를 교체한 뒤에 그 결과를 담는 포인터
int length; //NULL문자를 포함한 사용자 입력 문자열의 '문자 개수'를 담는 일반 변수
printf("문자를 입력하세요(50자이내로) : ");
fgets(input_string, MAX_INPUT - 1, stdin); //문자열 입력함수, 최대 49자 입력가능 ( NULL문자 자리는 비워둬야함.)
length = strlen(input_string) + 1; //입력한 문자열의 문자개수 + NULL문자 (1개)

output = (char *)calloc(length, sizeof(char)); //포인터 변수에 메모리 할당(배열처럼 됩니다) 후 초기화, 할당하는 크기는 char 자료형(1byte)이 입력된 문자의 개수 + NULL문자 개수(1개) 만큼의 크기 

for (int i = 0; i < length; i++)
{
if (input_string[i] >= 'a' && input_string[i] <= 'z') // 입력된 문자열 중 i번째 인덱스의 '문자'가 소문자일때 작동
{
output[i] = input_string[i] + 'A' - 'a'; //포인터 변수의 i 번째 주소에 소문자를 대문자로 바꾼 뒤 대입
}
else if (input_string[i] >= 'A' && input_string[i] <= 'Z') //입력된 문자열 중 i번째 인덱스의 '문자'가 대문자일때 작동
{
output[i] = input_string[i] - ('A' - 'a');//포인터 변수의 i 번째 주소에 대문자를 소문자로 바꾼 뒤 대입
}
else
{
output[i] = input_string[i]; //대문자 소문자 외의 문자는 그대로 유지하며 포인터 변수의 i번째 주소에 대입

}
}

printf("문자 입력\t: %s", input_string); //사용자로부터 입력받은 문자열이 담긴 배열을 출력
printf("변형된 문자\t: %s", output); // 대소문자를 맞바꾼 문자열을 입력받은 포인터를 출력

free(output);


}