C 문자열과 특정 문자를 입력받아 특정 문자 이전의 문자를 출력하는 코드

조회수 788회

아래가 제가 풀고있는 문제입니다.

문제 설명

공백을 포함하지 않는 문자열과 특정 문자를 입력받아 특정 문자 이전의 문자를 출력하는 코드를 작성하시오. 문자열의 길이는 최대 100개로 제한하며, 문자가 포함되지 않았을 때는 ‘NO.’를 출력한다.

int main()
{

 if (  == NULL)

    printf("NO.");

else

    printf("이전문자는 %s입니다.", p);
}

입력 예시 1

STRING I

출력 예시 1

이전문자는 STRI입니다.

입력 예시 2

Pororo O

출력 예시 2

NO.

#include<stdio.h>

int main() {

  char a[100];
  char b[100];
  char ptr[10];

  char *result = NULL;

  scanf("%s %s", a, ptr);

  int i;
  int count = 0;

  for(i = 0; a[i] != *ptr; i++){
    count++;
  }

  for(i = 0; i <= count; i++){
    b[i] = a[i];
  }

  result = b;

  if(result == NULL)
    printf("NO.");
  else
    printf("이전문자는 %s입니다.", b);

  return 0;
}

strchr을 이용해서 해결해볼려다가 도저히 어떻게 해야하는 모르겠어서 위 코드처럼 인덱스로 접근해봤지만, 저 if, else 문을 반드시 사용하라는 것 때문에 적절한 코드를 어떻게 작성해야 할지 난해하여 이렇게 다시 질문드려봅니다.

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    아래 코드 참고하세요.

    • 코드
    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        char str[100] = "";
        char ch = 0;
        char res[100] = "";
        char* p = NULL;
    
        scanf("%s %c", str, &ch);
    
        char* p_back = strchr(str, ch);
        if (p_back) {
            int i = 0;
            while (str[i] != ch) {
                res[i] = str[i];
                ++i;
            }
            res[i] = ch;
            res[i + 1] = 0;
            p = res;
        }
    
        if (p== NULL)
            printf("NO.");
        else
            printf("이전문자는 %s입니다.", p);
    
        return 0;
    }
    
    • 결과

    이미지

    이미지

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 정말 감사합니다! 어떻게 해야 될지 정말 몇일을 고민했는데 덕분에 해결할 수 있어서 기쁩니다! IBNhyeoli 2021.11.29 19:14

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)