소프트웨어 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 | - | - |
51899 | 윈 도 우| 만능고스트 설치시 오류 창이 뜹니다 IAR 통합해도 안되네... [2] | 하하히 | 1046 | 04-23 |
51898 | 윈 도 우| 윈도우7 | 왕방울토끼 | 1213 | 04-23 |
51897 | 소프트웨어| 어떻게하면 여러개의 백업을 할 수 있나요?? [1] | qkqkqk | 946 | 04-23 |
51896 | 윈 도 우| 지금 유튜브 검색되시나요? [1] | CT | 940 | 04-23 |
51895 | 윈 도 우| 햐..고스트 오류 떄문에 미치곘습니다.. [3] | 하하히 | 987 | 04-23 |
51894 | 윈 도 우| 혹시 근데 고스트 이미지에 이지드라이버를 편집 할 수 있... [3] | 하하히 | 897 | 04-23 |
51893 | 윈 도 우| 드라이브가 이상하네요 [1] | 샤잠 | 848 | 04-23 |
51892 | 윈 도 우| cassicshell에 나오는 classic menu를 다른 앱에서는 안되... | brucex | 915 | 04-23 |
51891 | 윈 도 우| 갑자기 갑자기 이렇게 느려집니다. [3] | 쭌쭌 | 1073 | 04-23 |
51890 | 윈 도 우| 계속 질문드려서 죄송합니다..윈도우7 만고에대한 질문입니... [8] | 하하히 | 1113 | 04-23 |
51889 | 하드웨어| SSD 쓰기/읽기 관련하여 질문드립니다. [17] | bohem | 1646 | 04-23 |
51888 | 소프트웨어| 윈도디펜더와 어베스트 백신설정. [2] | 수림초롱 | 1420 | 04-23 |
51887 | 윈 도 우| 윈도우8 맥키는 8.1 업데이트가 안되는건가요? [4] | 바다가조아 | 1468 | 04-23 |
51886 | 윈 도 우| 윈도우8 설치했는데요 [1] | 크롱 | 985 | 04-23 |
51885 | 윈 도 우| 윈도우 8.1 [2] | 크롱 | 1764 | 04-23 |
51884 | 윈 도 우| 펜티엄4 노스우드3.0에 운영체제 추천좀 해주세요 [11] | SD1234 | 2241 | 04-23 |
51883 | 소프트웨어| Light Alloy란 미디어 플레이어 아시는 분?? | 과객 | 921 | 04-23 |
51882 | 윈 도 우| win 8.1과 갤럭시노트3 usb 연결인식문제 [3] | zxcnet | 3721 | 04-23 |
51881 | 윈 도 우| 윈도우 81. 프로 엔터 [2] | 크롱 | 2044 | 04-23 |
» | 소프트웨어| C언어 고수님들.. 도와주세요.. [6] | 푸른하늘좋 | 1365 | 04-24 |
쩝~ 다른 작업하든중에 들어와보니 문제가 있네요
문제를 보니 풀고 싶고 내가 풀어서는 안되는데 쩝~
열공하세요
#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;
}