#include <stdio.h>
int main()
{
char words[50] = "A string in an array"; //배열에 문자열 저장.
const char* pt1 = "A pointer to a string"; //const 포인터를 사용하여 문자열 저장.
puts(words); // words에 저장된 문자열 출력. puts() = 문자열 출력 함수.
puts(pt1); // pt1에 해당하는 문자열 출력.
//pt1[8]= 'A'; //string이 저장된 memory를 수정하려고 하면 에러 발생. (read-only memory)
return 0;
}
#include <stdio.h>
int main()
{
const char* mythings[5] = { //문자열을 포인터로 선언.
"Dancing in the rain",
"Couting apples",
"Watching movies with friends",
"Writing sad letters",
"Studying the C language"
};
char yourthings[5][40] = { //문자열을 배열로 선언.
"Studying the C++ language",
"Eating",
"Watching Netflix",
"Walking around till dark",
"Deleting spam emails"
};
const char* temp1 = "Dancing in the rain"; //포인터 temp1에 "Dancing in the rain"이 저장되어 있는 memory 주소 저장.
const char* temp2 = "Studying the C++ language"; //포인터 temp2에 "Studying the C++ language"이 저장되어 있는 memory 주소 저장.
printf("%s %u %u\n", mythings[0], (unsigned)mythings[0], (unsigned)temp1);
//mythings의 첫번째 원소 값, mythings의 첫번째 원소 memory 주소, temp1의 값 출력.
printf("%s %u %u\n", yourthings[0], (unsigned)yourthings[0], (unsigned)temp2);
//yourthings의 첫번째 원소 값, yourthings의 첫번째 원소 memory 주소, temp2의 값 출력.
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
char arr[20] = "";
gets(arr); // gets() 함수로 문자열 입력 받고 arr에 저장.
printf("%s\n", arr); // gets() 함수로 입력 받은 값 출력.
gets_s(arr, 20); // gets_s() 함수로 문자열 입력 받고 arr에 저장.
printf("%s\n", arr); // gets_s() 함수로 입력 받은 값 출력.
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
char arr[20] = "";
fgets(arr, 20, stdin); // 콘솔로 입력받은(stdin) 문자열을 arr에 저장.
printf("%s\n", arr);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
char arr[50] = "puts() function test. puts() has \\n";
puts(arr); // arr의 문자열 출력. (with '\n')
puts("END"); // 출력된 문자열 밑에 END 출력.
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
char arr[50] = "fputs() function test. fputs() doesn't has \\n";
fputs(arr, stdout); // arr의 문자열을 콘솔 창에 출력.
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
char arr[50] = "Hello my name is taeil. nice to meet you.";
int strlength = strlen(arr); // arr 문자열의 길이를 변수 strlength에 저장.
printf("%d", strlength); // strlength 값 출력.
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
char arr[100] = "Hello my name is taeil. nice to meet you. ";
strcat(arr, "Have a nice day!"); // arr 문자열에 Have a nice day! 문자열 덧붙임.
printf("%s", arr);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
//char arr[100] = "Hello my name is taeil. nice to meet you. ";
printf("%d\n", strcmp("Taeil", "Taeil")); // 0 반환.
printf("%d\n", strcmp("Taeil", "Nam")); // 1 반환. (T > N)
printf("%d\n", strcmp("Nam", "Taeil")); // -1 반환. (N < T)
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
//char arr[100] = "Hello my name is taeil. nice to meet you. ";
printf("%d\n", strncmp("Taeil", "Taeil", 1)); // 0 반환. 1 번째 까지만 비교
printf("%d\n", strncmp("Taeil", "TaNam", 2)); // 0 반환. 2 번째 까지만 비교
printf("%d\n", strncmp("Taeil", "Taeil Nam", 3)); // 0 반환. 3 번째 까지만 비교
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
char dst1[100] = "";
char dst2[100] = "";
char src[] = "strcpy TEST !";
strcpy(dst1, src); //dst1에 src 문자열 복사.
printf("%s\n", dst1); //dst1 출력.
strcpy(dst2, src + 7); //dst2에 src 문자열의 7 번째부터 복사.
printf("%s", dst2); //dsr2 출력.
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
char arr[100] = ""; //문자열이 저장될 배열 arr.
char name[10] = "Taeil"; //배열 name 의 값 = Taeil.
sprintf(arr, "First Name = %s, Last Name = Nam.", name);
//"First Name = %s, Last Name = Nam." 문자열을 배열 arr에 저장. %s에 대입될 값 = 배열 name의 값.
printf("%s", arr); // 배열 arr 값 출력. ("First Name = Taeil, Last Name = Nam." 출력)
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void swap(int* xp, int* yp);
void printArray(int arr[], int size);
void selectionSort(int arr[], int n);
int main()
{
int arr[] = { 64, 25, 12, 22, 11 };
int n = sizeof(arr) / sizeof(arr[0]);
selectionSort(arr, n);
printArray(arr, n);
return 0;
}
void swap(int* xp, int* yp)
{
long long int temp = 0;
temp = *xp;
*xp = *yp;
*yp = temp;
}
void printArray(int arr[], int size)
{
for (int i = 0; i < size; ++i)
{
printf("%d ", arr[i]);
}
}
void selectionSort(int arr[], int n)
{
int min_index = 0;
int count = 0;
while (count != (n - 1))
{
for (int i = count; i < n - 1; ++i)
{
for (int j = i + 1; j < n; ++j)
if (arr[i] > arr[j])
{
min_index = j;
swap(arr + i, arr + min_index);
}
}
count++;
}
}
💡 강의 안보고 혼자서 직접 구현했음!! (코드가 더러움)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h> //strcmp() 함수의 라이브러리.
void swap(char** xp, char** yp);
void printStringArray(char* arr[], int size);
void selectionSort(char* arr[], int n);
int main()
{
char* arr[] = { "Cherry", "AppleBee", "Pineapple", "Apple", "Orange" };
int n = sizeof(arr) / sizeof(arr[0]);
printStringArray(arr, n);
selectionSort(arr, n);
printStringArray(arr, n);
return 0;
}
void swap(char** xp, char** yp)
{
char* temp = *xp ;
*xp = *yp;
*yp = temp;
}
void printStringArray(char* arr[], int size)
{
for (int i = 0; i < size; ++i)
{
printf("%s\n", arr[i]);
}
printf("\n");
}
void selectionSort(char* arr[], int n)
{
int i, j, min_index;
for (int i = 0; i < n - 1; ++i)
{
min_index = i;
for (j = i + 1; j < n; ++j)
{
if (strcmp(arr[j], arr[min_index]) < 0) //비교할 값의 문자가 기존 값의 문자보다 작을 경우.
min_index = j; // 비교할 값의 index를 min_index에 저장.
}
swap(&arr[i], &arr[min_index]); // arr[i]와 arr[min_index]의 값을 서로 바꿈.
}
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <ctype.h> //toupper(), ispunct() 함수 사용.
void ToUpper(char* str); //문자열을 전부 대문자로 변경해주는 함수.
int PunctCount(const char* str); //문자열에 포함된 기호가 몇 개인지 알려주는 함수.
int main()
{
char str[100];
char* new_str = NULL;
fgets(str, 100, stdin);
new_str = strchr(str, '\n'); //문자열 str에서 \n 을 찾으면 해당 포인터 값을 반환.
if (new_str) //new_str이 값을 가지고 있는 경우 = if (new_str != NULL)
*new_str = '\0'; //찾은 \n 을 \0으로 변환.
ToUpper(str);
puts(str);
printf("%d\n", PunctCount(str));
return 0;
}
void ToUpper(char* str)
{
while (*str) //*str이 값을 가지고 있는 경우 = while (str != NULL)
{
*str = toupper(*str); //해당 값을 대문자로 변경.
str++; //다음 문자로 전환. (포인터 산술연산)
}
}
int PunctCount(const char* str)
{
int ct = 0;
while (*str) //*str이 값을 가지고 있는 경우 = while (str != NULL)
{
if (ispunct(*str)) // *str이 기호에 해당하는 경우.
ct++; // ct 1 증가.
str++;
}
return ct;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(int argc, char* argv[]) //argc = 명령어의 문자열 개수, argv[] = 명령어의 문자열들이 저장되는 배열.
{
int count;
printf("The command line has %d arguments:\n", argc); //명령어의 문자열 개수 출력.
for (count = 0; count < argc; ++count)
printf("Arg %d : %s\n", count, argv[count]); // 명령어의 문자열들 출력.
printf("\n");
return 0;
}
🚩 출처 및 참고자료 : 홍정모의 따라하며 배우는 C 언어 (따배씨)