Computer Science/C\C++

[C언어] 문자 역으로 출력, strncat/strlen활용

hyunjin 2021. 5. 26. 20:26
  • str1[100]에 문장을 저장
  • str2[100]에 입력 받은 문장 
  • strncat/strlen 활용
#include <stdio.h>
#include <string.h>


int main(void) {//ex. hello
  int len;//문자열 길이
  char str1[100];
  
  printf("Please input the sentence : ");
  gets(str1);//100글자 이내의 문장을 입력받아 str배열에 저장
  
  len=strlen(str1);//문자열 길이, 5
  char str2[len+1];//strlen사용, 6 길이의 배열 \0을 포함해야하기 때문
  //처음에 초기화 시킬때랑 실제 배열 사용할때가 구별되야함. 배열 사용할땐 -1
  
  for(int i=0;i<len;i++){ //i=5까지 반복문 실행
    //strncat 사용하여 해야함.
    //처음 생각했던 코드
    // char temp[len];
    // temp[i]=str1[len-i-1];
    // strncat(str2, temp+i ,1);
    strncat(str2,str1+len-1-i,1);//str1+5-i, str1은 str1[0]의 주소를 가리킴
    // (len-1)을 더한 이유 : 배열 사용할때 -1 해야함(?), len로하면 \0먼저 받아올듯?

  }
  str2[len+1]='\0';
  printf("Inversed sentence: ");
  puts(str2);
}