Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[4966] Re:함수와 포인터에 대한 질문입니다.
[] 1270 읽음    2005-03-23 00:59
한성현 님이 쓰신 글 :
: 제가 하는 것은.
: 입력값이
: COmmon Business Oriented Language
: 라면
: 출력갑이
: COBOL is COmmon BUsiness Oriented LAnguage
: 가 되는
: 대문자를 추출하는 것입니다.
: 그냥 대문자만 출력하는건 되는데여..
: 아니 그것도 getchar()로 해서 이상합니다.
: gets() 를 쓰고 함수로 정리를 한다면
: 어떻게 해야 되는지 궁금합니다.
:
: #include <stdio.h>
: #include <string.h>
:
: /*
: void main()
: {
:     int ch;
:     char s1[10];
:        
:     while((ch=getchar())!='\n')
:     {
:         if(ch>='A' && ch<='Z')
:         {
:             for(int j=0;j=='\0';j++)
:             {
:                 s1[j]=putchar(ch);
:             }
:         }
:         }
:    
:     printf("%s \n",s1);
: } */
: mm(char *);
: void main()
: {
:     static char s[50];
:     gets(s);
:
:     printf("%s is %s\n",mm(s),s);
: }
:
: mm(char *s)
: {
:     int i;
:     char s1[10];
:
:     for(i=0;i<=50;i++)
:     {
:         if(*(s+i)>='A' && *(s+i)<='Z')
:         {
:             for(int j=0;j=='\0';j++)
:                         {
:                 s1[j]=*(s+i);
:             }
:         }
:     }
:     return(*s1);
: }
:                    
: 위에 주석으로 되있는게 대문자만 거르는 것입니다.
: 이걸 함수로 만들어서 이용할려고 하는데 잘 안됩니다.
: 가르침 부탁드립니다~~

#include<stdio.h>
#include<conio.h>

int GetBigLetters(const char* p ,char *ret);
void RemoveLastNewLineChar(char*p)

#pragma argsused
int main(int argc, char* argv[])
{
const int MAX_INPUT_LEN=1024;
char buffer[MAX_INPUT_LEN+1];
char bigletters[MAX_INPUT_LEN+1];
fgets(buffer,MAX_INPUT_LEN,stdin);
RemoveLastNewLineChar(buffer);//gets()를 사용한다면 이 부분은 불필요.
if(0<GetBigLetters(buffer,bigletters)) printf("%s is %s",bigletters,buffer);
else  printf("%s",buffer);
//while(kbhit()) getch(); getch();
return 0;
}
//---------------------------------------------------------------------------

//p 문자열에서 대문자만을 찾아 순서대로 ret에 저장한 후 저장한 문자수를 반환
int GetBigLetters(const char* p ,char *ret)
{
char *oret=ret;
while(*p)
{
  if(*p>='A' && *p<='Z') *ret++=*p;
  ++p;
};
*ret=0;
return(ret-oret);
}

GetBigLetters 함수는 GetAcronym이라 이름 붙이는 것도 괜찮겠습니다.

//---------------------------------------------------------------------------
void RemoveLastNewLineChar(char*p)
{
while(*p)
{
  //if(*p=='\n' && *(p+1)=='\0')
  if(*(short*)p==0x000A)
  {
   *p=0;
  }
  ++p;
};
}
//---------------------------------------------------------------------------

+ -

관련 글 리스트
4866 함수와 포인터에 대한 질문입니다. 한성현 1209 2005/01/04
4966     Re:함수와 포인터에 대한 질문입니다. 1270 2005/03/23
4867     Re:함수와 포인터에 대한 질문입니다. 진수.네모 1360 2005/01/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.