소프트웨어 C언어 고수님들.. 도와주세요..
2014.04.24 01:12
안녕하세요.
C언어 배우고 있는데, 과제물이 너무 어렵네요..
포인터를 써야 할 것 같은데,
bad를 good 로 고치면 되는데, 문제는 글자 길이가 달라서 추가적으로 함수를 더 써야되는 건지요?
소스를 어떻게 짜면 될까요?
도와주시면 감사하겠습니다.
(문제가 된다면 게시물 삭제하겠습니다.)
------------------------------------------------------------
문자열에서 특정 문자열을 변환하기
– C언어는 문자열을 변환하기 위한 특별한 함수를 제공하지 않습니다.
– 따라서, 입력 받은 문자열 중에서 특정 문자열을 변환하는 함수를 작성합니다.
– 소스코드 작성 조건(함수 이름) 변환문자열 함수 원형은 다음과 같이 한다.
-> void ReplaceStr(char *string, char *oldstr, char *newstr);
다음 [실행결과 예]와 같은 프로그램을 작성하시오
입력 문자열 ? I am a bad student (엔터)
변환하고자 하는 문자열 ? bad (엔터)
변환될 문자열? good (엔터)
입력 문자열을 다음과 같이 변환하였습니다.
I am a good student
------------------------------------------------------------
댓글 [6]
-
초리 2014.04.24 05:21
-
푸른하늘좋아 2014.04.24 09:26
앗! 감사합니다.
나이 들어서 직장 야근 + 가정을 이끌며 공부하기가 힘드네요..
요즘 계속 이것 붙잡느라 새벽에야 잠들었습니다.
오늘 퇴근하자 마자 집에가서 올려주신 소스 분석하며,
제 것으로 만들겠습니다.
감사합니다!
C언어에서 포인터가 정말 중요하다는데, 이해하기가 어렵네요.
강사 말로는 포인터 공부하다 포기하는 사람이 많고,
프로그래머 중에서도 잘 몰라서 Copy&Paste 하는 사람도 종종 있다고 그러네요..
아무튼 열심히 공부하겠습니다.
-
초리 2014.04.24 11:07
앗! 혹시 재귀호출법을 안배웠다면
return ReplaceStr(srcstr, oldstr, newstr); <== 삭제해주세요
그래도 원하는 답은 나올거예요.
-
푸른하늘좋아 2014.04.24 11:13
그런가요?
그 줄 삭제해도 되나보지요?
감사합니다. ^^
-
qkqh 2014.04.24 11:44
char* ch 값 넣는 부분 빼먹으신 것 같네요. 나중에 작성하려고 빈 줄 하나 넣으신 것 같은데...
ch = srcstr + strlen(srcstr); 라고 하면 될 것 같은데 정확하진 않아요
-
푸른하늘좋아 2014.04.24 19:06
세세한 부분까지 챙겨주셔서
감사합니다.
넣어서 해 보겠습니다.^^
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
48375 | 소프트웨어| 사이버링크 파워DVD 14버전 디인터레이싱에 관한 질문입니다. | 놀숲냥이 | 1679 | 04-25 |
48374 | 소프트웨어| CCleaner가 크롬을 초기화 시키네요. [13] | 마스크 | 2887 | 04-25 |
48373 | 윈 도 우| picon startup utility 이게 뭐죠? | 수림초롱 | 5402 | 04-25 |
48372 | 윈 도 우| 동일 네트워크에서 다중 홈그룹 구성이 가능합니까? [1] | 솔피우는바 | 1197 | 04-25 |
48371 | 윈 도 우| 이클립스 지원 윈도우pe 질문 [2] | 노네임 | 1001 | 04-25 |
48370 | 윈 도 우| 통합oem 인증파일넣기 [1] | 어사또 | 2071 | 04-25 |
48369 | 하드웨어| VGA-DVI 젠더로 연결하면 [3] | CT | 1392 | 04-25 |
48368 | 윈 도 우| 업데이트 통합시 확인방법은? [2] | 나세모 | 1009 | 04-25 |
48367 | 윈 도 우| 핫픽스통합 [2] | 어사또 | 1119 | 04-25 |
48366 | 기 타| 하드디스크를 grub4dos 부팅시에... [2] | 해피그라 | 1250 | 04-25 |
48365 | 윈 도 우| msdn 윈도 8.1 업데이트 질문입니다. [3] | birthof | 2052 | 04-25 |
48364 | 하드웨어| 하드웨어 정보 관련하여서 [5] | 복구시디 | 944 | 04-25 |
48363 | 윈 도 우| usb를 파티션을 나눠서 한쪾은 pe 한쪽은 고스트 파일을 넣... [3] | 하하히 | 1366 | 04-25 |
48362 | 기 타| 윈도우 관련글 은 아니고.. [1] | 악을 써라 | 1114 | 04-25 |
48361 | 소프트웨어| 트루이미지 플러스팩 사용문의 [2] | 그대만바 | 1001 | 04-25 |
48360 | 기 타| 레노버 복구영역 진입키.... [2] | benari | 2740 | 04-25 |
48359 | 윈 도 우| 윈도우8, 8.1에서 원래 토렌트 피어가 잘 안모이나요? [3] | sangersa | 1835 | 04-25 |
48358 | 윈 도 우| 윈도우7 업데이트 필수 업데이트가 있나요? 그리고 고스트.. [1] | 하하히 | 1295 | 04-25 |
48357 | 윈 도 우| WORLD`S BEST WINDOWS 8.1 PE - PE혁명 USB 작업은.. [2] | 이슬 | 1460 | 04-25 |
48356 | 기 타| 해상도가 아닌 모니터 Dimension을 알 수 있는 프로그램은? [3] | 멀더는외계 | 1060 | 04-25 |
쩝~ 다른 작업하든중에 들어와보니 문제가 있네요
문제를 보니 풀고 싶고 내가 풀어서는 안되는데 쩝~
열공하세요
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void ReplaceStr(char *srcstr, char *oldstr, char *newstr)
{
char buffer[1000];
char *ch;
strncpy(buffer, srcstr, ch-srcstr);
buffer[ch-srcstr] = 0;
sprintf(buffer+(ch - srcstr), "%s%s", newstr, ch + strlen(oldstr));
srcstr[0] = 0;
strcpy(srcstr, buffer);
return ReplaceStr(srcstr, oldstr, newstr);
}
int main(void)
{
char src[100];
char old[100];
char newstr[100];
printf("입력문자열 ? ");
gets(src);
printf("\n");
printf("변환하고자 하는 문자열 ? ");
gets(old);
printf("\n");
printf("변한될 문자열 ? ");
gets(newstr);
printf("\n");
ReplaceStr(src, old, newstr);
printf("\n\n입력 문자열을 다음과 같이 변환하였습니다\n%s\n------------------------------------------------------------\n", src);
return 0;
}