살구월드

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

목차

  1. 이전 포스팅의 C 언어 memmove API로 메모리 값 이동 예제 학습 링크
  2. 이전 포스팅의 C 언어 strcpy 문자열 복사 예제 학습 링크
  3. 이전 포스팅의 C 언어 fprintf 함수로 파일에 문자열 쓰기 예제 학습 링크
  4. C 언어 문제와 정답 입력 모드로 사용자에게 입력받아 로컬에 문제 및 정답 텍스트 파일 생성 예제
  5. C 언어 로컬의 문제와 정답 텍스트 파일을 읽고 퀴즈 문제 출력 및 정답 입력받기 예제

 

 

 

 

 

 

 

 

 

이전 포스팅의 C 언어 memmove API로 메모리 값 이동 예제 학습 링크

이전 포스팅에서는 c언어에서 memmove 함수를 사용하여 특정 버퍼에 있는 값을 다른 버퍼에 이동시키는 예제에 대해 알아보았습니다. 사실상 다른 버퍼에 대한 값 복사로 보일 수 있지만 동일한 버퍼에 대해서 값을 다른 오프셋으로 이동시킬 때 사용하기도 합니다. 메모리 관련 함수는 mempcy, memmove 등 많지만 memmove 함수도 다양한 사례에서 사용됩니다. 만약 c언어 프로그래밍을 수행중에 메모리 값 이동이 필요하다면 아래의 포스팅을 참고하여 학습해주세요.

 

2023.07.18 - [C/stdio] - [C언어/C++] C언어 memmove 메모리 이동

 

[C언어/C++] C언어 memmove 메모리 이동

이전에 배운 memcpy 함수는 한 메모리 공간의 값을 다른 공간으로 복사하는 역할을 하였습니다. 오늘은 복사가 아닌 한쪽 공간의 값을 그대로 다른 공간으로 이동시키는 방법에 대해 알아보겠습

salguworld.tistory.com

 

 

 

 

 

 

 

이전 포스팅의 C 언어 strcpy 문자열 복사 예제 학습 링크

다음으로 이전 포스팅에서는 c언어에서 strcpy 함수를 사용하여 특정 버퍼가 가리키는 문자열을 다른 버퍼에 복사하는 예제에 대해 알아보았습니다. strcpy는 메모리 공간에서 문자열을 표현하는 특성을 이용한 함수입니다. c에서는 버퍼에 문자열을 저장하고 문자열의 끝을 가리키는 NULL 값을 입력합니다. 이 NULL을 입력받으면 strcpy는 문자열 복사를 종료합니다. 따라서 해당 내용이 궁금하시다면 아래 링크를 참고해주세요.

 

2023.07.18 - [C/응용] - [C언어/C++] C언어 strcpy 문자열 복사

 

[C언어/C++] C언어 strcpy 문자열 복사

strcpy 프로그램을 개발하다 보면 배열의 문자열들을 다른 배열에 복사해야 할 때가 있습니다. 이럴 때 우리는 string.h 에 있는 유틸리티 함수들을 많이 사용하게 됩니다. C 언어에서는 strcpy 라는

salguworld.tistory.com

 

 

 

 

 

 

 

이전 포스팅의 C 언어 fprintf 함수로 파일에 문자열 쓰기 예제 학습 링크

마지막으로 이전 포스팅에서는 c언어에서 fprintf 함수로 파일에 문자열을 쓰는 방법을 알아보았습니다. 출력이라고도 표현합니다. 파일에 문자열을 출력시켜 내용을 입력하고 이후 fread 등과 같은 읽기 함수를 사용하였을 때 내용을 다시 불러올 수 있습니다. c언어에서는 이러한 fprintf 함수를 활용하여 문자열을 입력할 수 있으므로 해당 내용이 궁금하신 분은 아래 링크의 포스팅을 참고해주세요.

 

2023.07.20 - [C/stdio] - [C언어/C++] fprintf 함수를 활용한 파일 쓰기

 

[C언어/C++] fprintf 함수를 활용한 파일 쓰기

C언어에서 fprintf 함수는 파일에 데이터를 출력하는 데 사용되는 중요한 함수입니다. 오늘은 이 함수를 이용한 예제를 확인해 보도록 하겠습니다. 우선 fprintf 함수 원형을 살펴보겠습니다. fprintf

salguworld.tistory.com

 

 

 

 

 

 

 

C 언어 문제와 정답 입력 모드로 사용자에게 입력받아 로컬에 문제 및 정답 텍스트 파일 생성 예제

아래는 c언어에서 퀴즈 프로그램을 구현하는 예제 코드입니다. 사용자에게 문제와 정답을 입력받는 모드를 선택하게하여 로컬 텍스트 파일에 해당 내용들을 입력하는 예제입니다. 이후 해당 내용을 읽고 문제와 답을 출력하여 퀴즈 프로그램을 구현합니다.

 

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

void createQuizFile() {
    FILE *file;
    char question[100], answer[50];

    // 문제 입력 받기
    printf("Enter a question: ");
    fgets(question, sizeof(question), stdin);

    // 정답 입력 받기
    printf("Enter the answer: ");
    fgets(answer, sizeof(answer), stdin);

    // 파일 열기
    file = fopen("/tmp/quiz.txt", "a");

    // 파일에 문제와 정답 저장
    fprintf(file, "Question: %sAnswer: %s\n", question, answer);

    // 파일 닫기
    fclose(file);

    printf("Quiz file created successfully!\n");
}

int main() {
    // 퀴즈 파일 생성 함수 호출
    createQuizFile();

    return 0;
}

 

 

c언어에서 프로그램 실행시 퀴즈 질문과 답을 입력하여 텍스트파일에 추가하는 모습

 

 

 

 

 

C 언어 로컬의 문제와 정답 텍스트 파일을 읽고 퀴즈 문제 출력 및 정답 입력받기 예제

아래는 c언어에서 로컬에 저장된 문제와 답이 적혀있는 텍스트 파일을 읽고 화면에 출력하여 퀴즈를 풀 수 있습니다.

 

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

#define MAX_LINE_LENGTH 200

// 함수 선언
void loadQuizFile();
int checkAnswer(const char *question, const char *userAnswer);

// 메인 함수
int main() {
    // 퀴즈 파일 로딩 함수 호출
    loadQuizFile();

    return 0;
}

// 로컬의 텍스트 파일에서 퀴즈 문제를 읽고 사용자에게 보여주고 정답을 입력받는 함수
void loadQuizFile() {
    FILE *file;
    char line[MAX_LINE_LENGTH];
    char question[MAX_LINE_LENGTH];
    char answer[MAX_LINE_LENGTH];
    char userAnswer[MAX_LINE_LENGTH];

    // 파일 열기
    file = fopen("/tmp/quiz.txt", "r");

    if (file == NULL) {
        perror("Error opening the file");
        exit(EXIT_FAILURE);
    }

    // 파일에서 문제와 정답 읽어오기
    while (fgets(line, sizeof(line), file) != NULL) {
        if (strstr(line, "Question:") != NULL) {
            // 문제 행 발견
            strcpy(question, line);
            printf("%s", question);
        } else if (strstr(line, "Answer:") != NULL) {
            // 정답 행 발견
            strcpy(answer, line);

            // 사용자에게 정답 입력 받기
            printf("Your Answer: ");
            fgets(userAnswer, sizeof(userAnswer), stdin);

            // 정답 확인
            if (checkAnswer(answer, userAnswer)) {
                printf("Correct!\n");
            } else {
                printf("Incorrect!\n");
            }
        }
    }

    // 파일 닫기
    fclose(file);
}

// 정답 확인 함수
int checkAnswer(const char *answer, const char *userAnswer) {
    // 정답 문자열 비교
    return strncmp(answer + 8, userAnswer, strlen(answer) - 8) == 0;
}

 

"answer: " 문자열 크기인 8 만큼 오프셋을 변경하여 정답을 비교한 모습

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

공유하기

facebook twitter kakaoTalk kakaostory naver band