소프트웨어 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 | - | - |
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 |
48355 | 윈 도 우| 리소스 모니터 - 최고 활성 시간 문의 [1] | 이크 | 4419 | 04-25 |
48354 | 소프트웨어| 오피스 엑셀 서버 저장시에 저장 시간이 느린 이유가 있을... | 엽기진탱이 | 1661 | 04-25 |
48353 | 윈 도 우| 급 궁금증 질문 하나 드릴게욨!! [2] | 하하히 | 896 | 04-25 |
48352 | 소프트웨어| 레이저 프린터와 복합기 추천 [3] | 번개 | 1434 | 04-25 |
48351 | 하드웨어| 프린터 추천좀 해주세용 [1] | 빠삐용 | 1224 | 04-25 |
48350 | 윈 도 우| usb 안전제거가 보이지도 않습니다.. [4] | vogues | 1419 | 04-25 |
48349 | 윈 도 우| 삼성노트북입니다.... 윈7이 안깔려요 ㅠㅡㅠ [8] | 윈도마스터 | 1979 | 04-25 |
48348 | 윈 도 우| ko_windows_8.1_with_update_x64_dvd_4048530.iso에는 여러... [4] | 알라뷰 | 5072 | 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;
}