본문 바로가기

C언어/프로그래머스

[c언어] 더 크게 합치기

 

1. 정수 a,b 문자열 변환 (sprintf )

2. a+b, b+a 정의 (strcpy, strcat 함수 )

3. a+b, b+a를 다시 정수로 변환해서 대소 비교(atoi 함수)

 

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

int solution(int a, int b) {
    int answer = 0;
    
    char stra[10], strb[10];
    sprintf(stra,"%d",a);
    sprintf(strb,"%d",b);
    
    char* sa = (char*)malloc(sizeof(char)*10);
    char* sb = (char*)malloc(sizeof(char)*10);
    
    strcpy(sa, &stra);
    strcat(sa, strb);
    
    strcpy(sb, &strb);
    strcat(sb, stra);
    
    int ia = atoi(sa);
    int ib = atoi(sb);
    
    if((a<1) || (b>10000))
        return -1;
    if(ia >= ib)
        return ia;
    else
        return ib;
    
    return answer;
}

 

1) sprintf

 

- 문자열 사이에 서식문자를 이용해 재조합하여 새로운 문자열을 만듬

- 출력하는 결과 값을 변수에 저장하게 해주는 기능 (string=printf -> sprintf)

- 기술된 형식(format)의 문자열로 변환

#include <stdio.h>
int sprintf(char *buffer, const char *format-string, arument-list);

 입력 매개변수

- char *buffer : 출력값을 저장할 문자열 

 - const char *format : 서식 문자열 

 - ... 가변 인자 리스트 

 

반환값 

 - 버퍼에 출력한 문자 개수 

sprintf(문자열, "%d", 정수); //정수를 10진 형태의 문자열로 반환
sprintf(문자열, "%x", 정수); //정수를 16진 형태의 문자열로 반환
sprintf(문자열, "%X", 정수); //정수를 16진 대문자 형태의 문자열로 반환
#include <stdio.h>

int main()
{
  char num1[10];
  char num2[10];
  int n1;
  int n2;
  
  scanf("%d %d", &n1, &n2);
  
  sprintf(num1, "%d", n1);
  sprintf(num2, "%d", n2);
  
  printf("%s %s", num1, num2);
  }

 

2) strcpy(dst, src)

 

- 문자열을 복사하는 함수 

- dst와 src는 모두 문자 배열로 src를 dst로 복사 

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

int main(void) 
{
	char src[] = "hello";
	char dst[6];
	
	strcpy(dst, src);
	printf("복사된 문자열=%s\n", dst);
	return 0;
}

 

3) strcat

 

- 문자열 뒤에 다른 문자열 연결

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

int main(void) 
{
	char s[11] = "hello";
	strcat(s, "world");
	printf("%s \n", s);
	
	return 0;
}

 

4) 문자열 수치로 변환

 

- 문자열을 정수값으로 변환하려면 atoi()를 사용하거나 sscanf()를 사용 

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

int main(void) 
{
	const char s[] = "100";
	char t[100] = "";
	int i;
	
	printf("%d\n",atoi("100")); //atoi()는 문자열 "100"을 정수 100으로 바꿈
	sscanf(s, "%d", &i) ; //문자열 "100"을 정수 100으로 i에 저장
	sprintf(t, "%d",100); //정수 100을 문자열 "100"으로 t에 저장
	return 0; 
}