살구월드

잠깐, 리눅스, C 언어, Java, Python 등
각종 예제 검색하기

 

목차

  1. 이전 포스팅의 C 언어 Openssl 라이브러리로 MD5 문자열 해시 예제 학습 링크
  2. 이전 포스팅의 C 언어 Openssl 라이브러리 활용 SHA1 해시 예제 학습 링크
  3. 이전 포스팅의 C 언어 Openssl 라이브러리 활용 SHA256 해시 예제 학습 링크
  4. C 언어 단순 연결 리스트에 사용자 정수 입력 받아 출력 예제
  5. C 언어 Linear Search 선형 탐색으로 연결 리스트에서 값 찾기 예제

 

 

 

 

 

 

 

 

 

이전 포스팅의 C 언어 Openssl 라이브러리로 MD5 문자열 해시 예제 학습 링크

이전 포스팅에서는 c언어에서 openssl 정적 라이브러리를 사용하기 위해 openssl 소스 코드를 다운로드 받아 빌드 후 정적 라이브러리를 생성하는 방법에 대해 알아보았습니다. 정적 라이브러리는 현재 개발중인 프로그램에 포함되어 빌드되는 형식을 의미합니다. 따라서 프로그램의 코드가 늘어나기 때문에 용량이 증가합니다. 이러한 라이브러리를 사용하여 md5 해시 알고리즘을 사용하는 방법에 대해 알아보았습니다. 또한 이 md5 해시 알고리즘을 사용하여 문자열을 해시하여 해시값을 구하는 예제도 알아보았습니다. 보통 해시는 무결성 검사를 위해 사용합니다. 또는 사용자 패스워드를 비교하기 위해 사용합니다. c언어의 md5 예제가 궁금하시다면 아래 링크를 참고해주세요.

 

2023.07.28 - [C] - [C/C++] C언어 Openssl 활용 MD5 해시 예제(문자열, 파일해시)

 

[C/C++] C언어 Openssl 활용 MD5 해시 예제(문자열, 파일해시)

목차 MD5란? 이전 빌드 환경 구성 포스팅 C Openssl MD5 컨텍스트 생성 예제 C Openssl MD5 해시 예제 C Openssl 문자열 입력받아 실시간 MD5 해시 예제 C Openssl 파일 MD5 해시 예제 1. MD5란? MD5(Message-Digest Algorith

salguworld.tistory.com

 

 

 

 

 

 

 

이전 포스팅의 C 언어 Openssl 라이브러리 활용 SHA1 해시 예제 학습 링크

다음으로 이전 포스팅에서는 c언어에서 openssl 라이브러리에 포함된 sha1 해시 알고리즘을 사용하는 방법에 대해 알아보았습니다. sha1 알고리즘은 md5보다 해시 값의 크기가 증가하여 해시 충돌 현상을 조금 더 방지한 알고리즘입니다. 미국의 표준 해시 알고리즘으로서 현재는 sha1 계열의 알고리즘도 보안상의 이유로 많이 사용하지 않습니다. 현재는 sha2 알고리즘 사용을 권장하고 있습니다. 따라서 c언어에서 openssl 라이브러리를 사용하여 sha1 해시 방법이 궁금하시다면 아래 링크의 포스팅을 참고하여 학습해주세요.

 

 

2023.07.28 - [C] - [C/C++] Openssl 활용 SHA1 해시 예제

 

[C/C++] Openssl 활용 SHA1 해시 예제

목차 SHA1이란? 이전 빌드 환경 구성 포스팅 C Openssl SHA1 컨텍스트 생성 예제 C Openssl SHA1 해시 예제 C Openssl 문자열 입력받아 실시간 SHA1 해시 예제 C Openssl 파일 SHA1 해시 예제 1. SHA1이란? SHA1(Secure Has

salguworld.tistory.com

 

 

 

 

 

 

 

 

이전 포스팅의 C 언어 Openssl 라이브러리 활용 SHA256 해시 예제 학습 링크

마지막으로 이전 포스팅에서는 c언어에서 openssl을 활용하여 sha256 해시 처리하는 방법에 대해 알아보았습니다. sha256은 sha2 계열의 해시 알고리즘입니다. 현재 표준으로서 기존의 md5, sha1 보다 보안성이 우수한 해시 알고리즘입니다. 즉, 해시 충돌 현상이 발생할 확률이 적은 알고리즘입니다. 따라서 보안성이 요구되는 프로그램을 구현중이시라면 아래의 포스팅을 참고하여 c언어에서 sha256 해시 알고리즘으로 해시하는 방법에 대해 학습해보세요.

 

2023.07.28 - [C] - [C/C++] Openssl 활용 SHA256 해시 예제

 

[C/C++] Openssl 활용 SHA256 해시 예제

목차 SHA256이란? 이전 빌드 환경 구성 포스팅 C Openssl SHA256 컨텍스트 생성 예제 C Openssl SHA256 해시 예제 C Openssl 문자열 입력받아 실시간 SHA256 해시 예제 C Openssl 파일 SHA256 해시 예제 MD5, SHA1, SHA256

salguworld.tistory.com

 

 

 

 

 

 

 

C 언어 단순 연결 리스트에 사용자 정수 입력 받아 출력 예제

아래는 c언어에서 오늘의 예제인 선형 탐색을 수행하기 위한 단순 연결 리스트를 선언하여 사용자에게 정수들을 입력받는 예제입니다. 이 값들을 이용하여 선형 탐색 예제를 알아보겠습니다.

 

#include <stdio.h>
#include <stdlib.h>

// 연결 리스트의 노드를 나타내는 구조체 정의
struct Node {
    int data;
    struct Node* next;
};

// 연결 리스트에 노드를 추가하는 함수
struct Node* insertAtEnd(struct Node* head, int data) {
    struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
    new_node->data = data;
    new_node->next = NULL;

    if (head == NULL) {
        head = new_node;
    } else {
        struct Node* temp = head;
        while (temp->next != NULL) {
            temp = temp->next;
        }
        temp->next = new_node;
    }

    return head;
}

// 연결 리스트를 출력하는 함수
void displayList(struct Node* head) {
    if (head == NULL) {
        printf("리스트가 비어 있습니다.\n");
        return;
    }

    struct Node* temp = head;
    while (temp != NULL) {
        printf("%d -> ", temp->data);
        temp = temp->next;
    }
    printf("NULL\n");
}

// 예제 사용
int main() {
    struct Node* head = NULL;
    int value, n;

    printf("원소의 개수를 입력하세요: ");
    scanf("%d", &n);

    for (int i = 0; i < n; ++i) {
        printf("원소 %d을(를) 입력하세요: ", i + 1);
        scanf("%d", &value);
        head = insertAtEnd(head, value);
    }

    printf("입력된 연결 리스트: ");
    displayList(head);

    return 0;
}

 

c언어에서 선형 탐색을 위해 단순 연결 리스트에 사용자에게 받은 값을 저장하여 출력한 모습

 

 

 

 

 

 

 

 

C 언어 Linear Search 선형 탐색으로 연결 리스트에서 값 찾기 예제

아래는 c언어에서 Linear Search 선형 탐색을 수행하여 사용자가 찾고자하는 값이 연결 리스트에 있는지 확인하는 예제입니다.

 

#include <stdio.h>
#include <stdlib.h>

// 연결 리스트의 노드를 나타내는 구조체 정의
struct Node {
    int data;
    struct Node* next;
};

// 연결 리스트에 노드를 추가하는 함수
struct Node* insertAtEnd(struct Node* head, int data) {
    struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
    new_node->data = data;
    new_node->next = NULL;

    if (head == NULL) {
        head = new_node;
    } else {
        struct Node* temp = head;
        while (temp->next != NULL) {
            temp = temp->next;
        }
        temp->next = new_node;
    }

    return head;
}

// 선형 탐색을 사용하여 연결 리스트에서 값 찾는 함수
struct Node* linearSearch(struct Node* head, int key) {
    struct Node* temp = head;

    while (temp != NULL) {
        if (temp->data == key) {
            return temp;
        }
        temp = temp->next;
    }

    return NULL; // 값을 찾지 못한 경우
}

// 예제 사용
int main() {
    struct Node* head = NULL;
    int value, n, searchKey;

    printf("원소의 개수를 입력하세요: ");
    scanf("%d", &n);

    for (int i = 0; i < n; ++i) {
        printf("원소 %d을(를) 입력하세요: ", i + 1);
        scanf("%d", &value);
        head = insertAtEnd(head, value);
    }

    printf("찾을 값을 입력하세요: ");
    scanf("%d", &searchKey);

    struct Node* result = linearSearch(head, searchKey);

    if (result != NULL) {
        printf("값 %d을(를) 찾았습니다.\n", searchKey);
    } else {
        printf("값 %d을(를) 찾지 못했습니다.\n", searchKey);
    }

    return 0;
}

 

c언어에서 선형 탐색으로 값을 찾는 모습. 일련으로 쭉 검색을 진행한다.

잠깐, 리눅스, C 언어, Java, Python 등
각종 예제 검색하기

공유하기

facebook twitter kakaoTalk kakaostory naver band