revsqueeze.c
문자열에서 주어진 문자를 제거하고 역순화 시키는 소스를 구현합니다.
/*
-실습) reversqueeze.
주어진 문자열(str)에서 주어진 문자 (c)를 제거하고 압축한 후에 역순화 시킨 문자열을
만들어 주는 함수 revsqueeze(str,c)를 만드시오.
=main에서
-입력은getchar() 사용할것.
-call은
result = revsqueeze(str,c);
-출력은 printf("%s\n" , result);
=function에서
-malloc 사용해서 결과 문자열을 생성시킬 것.
-반드시 포인터 사용할것.
*/
#include<stdio.h>
#include<stdlib.h> //malloc
#include<string.h> //strlen
#define MAX 100
char* Revsq(char* pstr,char c);
int main(void){
char str[MAX]; // 문자열이 입력될 배열.
char s; // getchar로 받을 변수.
char c; // 제거하기 원하는 문자.
int cnt = 0; // => 배열의 인덱스.
char* result;
puts("문자열을 쓰고 제거할 문자를 입력하시오.(띄어쓰기)");
while((s = getchar()) != '\n')
{
if(s == ' '){ // 제거할 문자 입력하는 부분.
s = getchar(); //띄어쓰기 후에 입력한 값을 c에저장.
c=s;
}
else
str[cnt] = s;
cnt++;
}
str[--cnt] = '\0'; //☆★마지막 NULL입력.☆★
// printf("str = %s c = %c\n",str,c);
result = Revsq(str,c); // revsq해준 값을 받는 결과 변수.
printf("\n%s\n",result);
return 0;
}
/*
RevsQueeze 함수.☆★☆★☆★☆★
-1. c를 제거한다.
-2. 거꾸로 저장.
*/
char* Revsq(char* pstr, char c){
int cnt = strlen(pstr)+1; //ex) str="abc" strl =3 , cnt =4
int j=0;
char* temp = (char*)malloc(strlen(pstr)+1); //새로운 문자열이 저장될 포인터.temp의 유동적 메모리 할당.
for(; cnt>=2; cnt--){ //☆★☆★☆★ex)cnt = 4..3..2..
if(*(pstr+cnt-2) != c) //☆★☆★☆★ *(pstr(0)+cnt(4)-2)='c'(인덱스가 2인 세번째 요소.)
*(temp+j++) = *(pstr+cnt-2);
else
continue;
}
*(temp+j) = '\0';
return temp;
}
이 글은 스프링노트에서 작성되었습니다.
'Programming Language > C' 카테고리의 다른 글
C Tutorial (strcmp+numcmp) (0) | 2010.10.14 |
---|---|
C Tutorial ([C.L.A]. 문자열중간읽기) (0) | 2010.10.14 |
C Tutorial (문자열크기비교) (0) | 2010.10.14 |
C Tutorial (실수형to문자열) (0) | 2010.10.14 |
C Tutorial (문자열to실수형) (0) | 2010.10.14 |